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

C++实现链表添加元素后无输出,代码问题排查求助

问题原因
  • 核心问题是addItem函数的head参数使用值传递:你在函数内修改head = n的操作仅作用于指针的本地副本,main函数中原始的head指针始终保持NULL
  • 调用printList时传入的head是空指针,直接跳过了整个遍历打印逻辑,所以终端没有任何输出
修复方案

有两种常见修改方式:

方案1:修改为指针引用传递(更简洁)

将addItem的第一个参数改为指针的引用,这样函数内对head的修改会直接作用到main中的原始指针:

// 仅修改addItem的参数定义即可
void addItem(struct Node* &head, int val) { // 添加&表示参数是指针的引用
   struct Node* n = new Node(val);
    if(head == NULL){
        head = n;
        return;
    }
    struct Node* cur = head;     
    while(cur->ptr != NULL){  
        cur = cur->ptr;
    }
    cur->ptr = n;
}

方案2:使用二级指针

如果不习惯引用语法,也可以传递指针的地址,通过解引用修改原始指针:

void addItem(struct Node** head, int val) {
   struct Node* n = new Node(val);
    if(*head == NULL){
        *head = n;
        return;
    }
    struct Node* cur = *head;     
    while(cur->ptr != NULL){  
        cur = cur->ptr;
    }
    cur->ptr = n;
}
// 调用时需要传入head的地址
addItem(&head, 1);
addItem(&head, 2);

修改后重新编译运行,即可正常输出1 2 3 4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:57:00