c++ - 从链接列表打印值,起始值作为函数中的默认值

标签 c++ singly-linked-list

我正在尝试制作一个递归函数,它将向后打印链表中的所有元素。

这是我做的函数:

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/

相关文章:

c++ - GLM 无法使用 g++/C++11 进行编译

c - 结构指针分配未分配预期值 - 链表

c++ - 使用下标重载的单链表排序

C++ - DirectSoundBuffer 在特定位置停止播放 - 无通知

c++ - libtool:i686-pc-mingw32 共享中不允许使用 undefined symbol

C++ AVL树旋转

c++ - std::experimental::ostream_joiner 和 std::pair

c++ - C++从链表中删除给定整数的倍数

java - 如何访问存储在单链表节点中的对象的特定变量(迭代)

java - 从单链表中删除特定元素 Java