我正在尝试制作一个递归函数,它将向后打印链表中的所有元素。
这是我做的函数:
void lista::printBack(node *pocetak) {
if (pocetak==NULL) {
return ;
}
printBack(pocetak->sljedeci);
cout<<pocetak->podatak<<" ";
}
现在开始提问。我想设置参数 pocetak 的默认值,以便函数可以打印没有起始值的列表。
但是当我这样做的时候:
void lista::printBack(node *pocetak = head)
{
if (pocetak==NULL) {
return ;
}
printBack(pocetak->sljedeci);
cout<<pocetak->podatak<<" ";
}
我总是收到一条错误消息: main.cpp:17:19: 错误:没有匹配函数来调用‘lista::printBack()’ main.cpp:17:19: 注意:候选人是: lista.h:20:10: 注意:void lista::printBack(node*) lista.h:20:10: 注意:候选人需要 1 个参数,提供 0 个参数
我有什么办法可以做到这一点吗?谢谢。
最佳答案
需要在头文件中指定默认参数(实现lista::printBack(node* pocetak=head)
是不够的)
// lista.h
struct node;
node* head;
struct lista
{
void printBack(node* pocetak=head);
};
请注意,这意味着您需要在定义 lista
类型之前声明一个有效的 node* head
,最好的方法是使用前向声明 (往上看)。此外,head
将是一个全局变量,这通常不是一个好主意。
编辑:固定类型名称
关于c++ - 从链接列表打印值,起始值作为函数中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583482/