我将尝试使用递归打印链表中每个节点的数据,但是我得到了越界错误,因此我认为我的递归函数有问题。
以下是头文件:
以下是头文件:
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块中再次这样做呢?
有没有更好的递归方法?这段代码对别人有效吗?我似乎无法使其正常运行。
out << n->data << std::endl; printList(out, n->next);
}`。 - Jean-François Fabren->next
是否被正确设置为nullptr
?还是一个随机未初始化的地址? - RyanPhead
是一个空指针,会发生什么? - Some programmer dude