递归打印列表
Printing a List Recursively
我试图使用递归在链表中打印每个节点的数据,但我正在越界错误,所以我认为我的递归函数有问题。
头文件:
class List
{
public:
void print(std::ostream &out) const {}
private:
Node *head;
void printList(std::ostream&, const Node*) const;
}
基本上,我从公共print
函数调用私有辅助函数。下面是两个函数的代码:
void List::print(std::ostream& out) const
{
printList(out, head);
}
void List::printList(std::ostream& out, const Node* n) const
{
if(n->next == NULL) {
out << n->data << std::endl;
return;
}
out << n->data << std::endl;
printList(out, n->next);
}
我认为问题在于我的if块,因为我需要停止,如果没有下一个节点,但也在返回之前打印当前节点中的数据,但由于我已经在printList(out, n->next)
中调用n->next
,我需要在我的if块中做吗?
有更好的递归方法吗?代码是否适用于其他人?我似乎不能使它工作。
需要更改if()
内部的条件。您应该检查当前节点是否为NULL
,而不是下一个节点。
void List::printList(std::ostream& out, const Node* n) const {
if(n == NULL) {
return;
}
out << n->data << std::endl;
printList(out, n->next);
}
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 链接列表运算符重载没有打印出我想要的内容
- 直接 2D 呈现到命令列表和打印:图片压缩
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 如何获取列表的每个对象并调用getName方法来打印其名称
- 只有我的"链接列表"中的第一个节点正在打印
- C++ - 使用 std::list,如何打印对象的私有成员的链接列表?
- C++使用相反的顺序打印带有逗号的列表
- 如何实现否定用户输入退出程序和打印列表?
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- C++:一种在列表中打印所有对的优雅方式
- C 打印集合列表
- 如何打印简单的链接列表(C )
- 如何编写循环以通过列表迭代并打印列表中每个元素的数据的数据
- 使用for_each从对象列表中调用打印功能
- 我的链接列表打印功能进入无限循环
- 链接列表打印null -C
- 链接列表打印不起作用.
- 将整数列表打印为逗号分隔的数字列表,每行最多 10 个
- 奇怪的列表打印函数行为。如果我打印"n"则有效,如果我删除它则不起作用