You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++链表递归打印时最后一个元素无限输出问题求助

代码存在的问题
  • 核心死循环问题:print_list方法中错误使用while循环触发递归调用。只要当前节点的next指针不为空,就会反复调用下一个节点的print_list方法,递归返回后while的判断条件仍然成立,导致无限重复触发下一个节点的打印逻辑,最终表现为最后一个元素被反复打印。只需要把while修改为if即可修复该问题。
  • 函数返回值不匹配问题:add方法声明返回Node类型,但函数体内没有任何返回语句,属于未定义行为,会引发不可预期的运行错误。建议将add方法的返回值修改为void。
  • 附加问题:代码中通过new申请的节点内存没有对应的释放逻辑,会产生内存泄漏,可按需添加析构函数处理内存回收。
修复后参考代码
#include <iostream>
using namespace std;

class Node
{
public:
    Node* next;
    int data;
    
    Node()
    {
        this->data = 0;
        this->next = NULL;
    }
    // 修改返回值为void
    void add(int data)
    {
        Node* node_t = new Node();
        node_t->data = data;
        node_t->next = NULL;
        this->next = node_t;
    }
    void print_list()
    {
        cout<<"data in list is "<< this->data << endl ;
        // while改为if
        if(this->next != NULL)
            this->next->print_list();
    }
    // 按需添加析构函数回收内存
    ~Node() {
        delete next;
    }
};

内容的提问来源于stack exchange,提问作者maddy0812

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:39:03