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

C++实现LinkedList追加多个节点后仅打印1个节点问题求修复

问题定位

问题出在appendNode函数的链表遍历与新节点挂载逻辑错误。

错误原因
  • 新节点挂载代码nodePtr->next = newNode;被错误写在了while循环内部:当链表仅存在头节点时,nodePtr->next为NULL,while循环条件不成立,挂载逻辑完全不会执行,除头节点外的所有新节点都没有被接入链表,最终打印时只能看到第一个节点。
  • 即便链表已有多个节点,循环内每次移动指针后直接覆盖当前节点的next指针,会直接清空原有后续节点,造成内存泄漏和链表结构断裂。
修复方案

将新节点挂载逻辑移动到while循环外部,等遍历到链表最后一个节点后再执行挂载操作,修改后的appendNode函数如下:

void appendNode(int d)
{
    Node* newNode = new Node;
    Node* nodePtr;

    newNode->data = d;
    newNode->next = NULL;

    if (!head)
    {
        head = newNode;
    }
    else
    {
        nodePtr = head;
        // 遍历到最后一个节点
        while (nodePtr->next)
        {
            nodePtr = nodePtr->next;
        }
        // 挂载新节点
        nodePtr->next = newNode;
    }
}
完整可运行修复后代码
#include <iostream>
using namespace std;

// 节点结构定义
struct Node {
    int data;
    struct Node* next;
};

// ------------链表类定义-----------
class LinkedList {
private:
    Node* head;

public:
    LinkedList()
    {
        head = NULL;
    }

    //----------- 节点追加函数 ------------
    void appendNode(int d)
    {
        Node* newNode = new Node;
        Node* nodePtr;

        newNode->data = d;
        newNode->next = NULL;

        if (!head)
        {
            head = newNode;
        }
        else
        {
            nodePtr = head;
            while (nodePtr->next)
            {
                nodePtr = nodePtr->next;
            }
            nodePtr->next = newNode;
        }
    }

    //--------------- 链表内容打印函数--------------
    void display()
    {
        Node* nodePtr;
        nodePtr = head;

        while (nodePtr != NULL)
        {
            cout << nodePtr->data << endl;
            nodePtr = nodePtr->next;
        }
    }
};

//-------------- 主函数 -------------
int main()
{
    LinkedList ll;

    ll.appendNode(2);
    ll.appendNode(21);
    ll.appendNode(11);
    ll.display();
    return 0;
}

运行后输出结果为:

2
21
11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:03