Подсчет узлов в круговом связанном списке с одним параметром? - PullRequest
0 голосов
/ 13 мая 2019

Таким образом, я должен считать узлы в круговом связанном списке рекурсивно.У меня есть заголовок, который я должен использовать:

int Recursive(node *head);

Можно ли считать узлы в этом списке только одним указателем?Каким будет алгоритм для этого?

1 Ответ

2 голосов
/ 13 мая 2019
       int count(node* head)
       {
          if(head == nullptr)
            return 0;
         return countRecursive(head, head->next);
       }

       int countRecursive(node* head, node* current)
       {
          if(current == head) // our end condition!
             return 1;
         return 1 + countRecursive(head, current->next);
       }

       Basically we go in a circle and stop when we return to the head, adding 1 while 
       we go.
...