2013-11-26 4 views
2

Я пытаюсь создать функцию, которая будет рекурсивно выводить мой список ссылок, но у меня возникают проблемы с этим, потому что рекурсия просто сложна.Печать LinkedList Рекурсивно с использованием C++

Это функция, которую я написал, очевидно, принимает параметр, но я не знаю, как его передать. И, вероятно, результат неправильный.

Я использовал ЬурейеЕ:

typedef struct node* nodePtr; 

и благодаря входу одного из парней, я обновил свою функцию, чтобы выглядеть, но теперь Visual Studio дает ошибку, которая говорит:

«Декларация несовместима с void List :: PrintListRecursively», поэтому я удивляюсь, что способ передачи параметра просто немного отличается.

спасибо заранее

void List::PrintListRecursively(nodePtr curr){ 

    if (curr==NULL) 
    { 
     cout << "\n"; 
     return; 
    } 
    cout << curr->data <<endl; 
    PrintListRecursively(curr->next); 


} 

я написал ту же функцию, не рекурсивно:

void List::PrintList(){ 
    curr = head; 
    while(curr != NULL) 
    { 
     cout << curr->data <<endl; 
     curr = curr->next; 
    } 
} 

и это один работает. Может кто-нибудь помочь с частью рекурсии и помочь мне узнать, что случилось. Не будьте слишком скупы.

+0

В чем проблема с рекурсивным примером? Почему результат неправильный? Не могли бы вы разместить небольшой рабочий пример? – elimirks

+0

Рекурсия не сложна. Объявите параметр в определении функции. http://www.cplusplus.com/doc/tutorial/functions2/ –

+0

Я отредактировал вопрос – Will

ответ

5

Ваш рекурсивная версия нуждается вход:

void List::PrintListRecursively(Node* curr) 
{ 
    if (curr==NULL) 
    { 
     cout << "\n"; 
     return; 
    } 
    cout << curr->data <<endl; 
    PrintListRecursively(curr->next); 
} 

Какой бы вы затем вызвать с помощью указателя головы:

list.PrintListRecursively(list.GetHead()); 

Или вы можете создать версию, которая не принимает никаких параметров:

void List::PrintListRecursively() 
{ 
    PrintListRecursively(GetHead()); 
} 

Что вызывает версию, которая принимает параметр указателя.

+0

Я отредактировал вопрос немного – Will

Смежные вопросы