使用C ++递归打印链接列表

时间:2013-11-26 20:01:31

标签: c++ recursion linked-list

我正在尝试创建一个能够递归打印出我的链接列表的函数,但是我很难做到这一点,因为递归很难。

这是我写的函数,显然需要一个参数,但我不知道如何传递它。可能输出是错误的。

我使用了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;
    }
}

这个很棒。有人可以帮助解决递归问题并帮助我找出错误的原因。不要太吝啬。

1 个答案:

答案 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());
}

哪个调用带有指针参数的版本。

相关问题