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

C++实现单链表打印时尾节点未输出问题求解

链表头插场景尾节点无法打印问题排查

问题定位

你的头插函数Insert逻辑完全正确,故障点在Print遍历函数的循环终止条件:

  • 现有判断while(temp->link!=NULL)的逻辑是:只要当前节点的后继指针为空就停止循环。而链表最后一个有效节点的link本身就为NULL,遍历到该节点时会直接跳过循环体内的打印逻辑,导致尾节点缺失。
  • 该写法还存在空指针风险:当链表为空(head=NULL)时,首次访问temp->link会直接触发内存访问错误。

修正代码

将循环判断条件改为「当前节点指针是否为空」,覆盖所有有效节点,修正后的Print实现:

void Print()
{
    Node* temp = head;
    // 节点本身为空才终止遍历,不遗漏任何有效节点
    while(temp != NULL)
    {
        cout << temp->data << " ";
        temp = temp->link;
    }
    cout << endl;
}

效果验证

若依次输入5个值1、2、3、4、5,头插后链表实际顺序为5 -> 4 -> 3 -> 2 -> 1 -> NULL:

  • 旧逻辑输出:5 4 3 2 ,遗漏尾节点1
  • 修正后输出:5 4 3 2 1 ,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:27:19