我正在尝试创建一个能够递归打印出我的链接列表的函数,但是我很难做到这一点,因为递归很难。
这是我写的函数,显然需要一个参数,但我不知道如何传递它。可能输出是错误的。
我使用了typedef:
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 :(得分:6)
您的递归版需要输入:
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());
}
哪个调用带有指针参数的版本。