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

使用不同构造函数创建链表:next指针始终为NULL的问题咨询

解决方法

你的构造函数写法没问题——新节点刚创建时本来就是孤立的,把next初始为NULL(现代C++里用nullptr更规范)是合理的。链表的节点链接不是在构造函数里完成的,需要你手动给每个节点的next指针赋值,指向它的下一个节点。

修改后的完整代码

#include<iostream>
using namespace std;

class node
{
public:
    int data;
    node* next;

    // 默认构造函数,用初始化列表更规范
    node() : data(0), next(nullptr) {}
    // 带参数的构造函数
    node(int value) : data(value), next(nullptr) {}
};


int main()
{
    // 创建节点
    node* n = new node();
    node* n1 = new node(1);
    node* n2 = new node(2);

    // 手动链接节点,形成链表:n -> n1 -> n2 -> nullptr
    n->next = n1;
    n1->next = n2;

    // 遍历链表输出,验证链接是否成功
    node* current = n;
    while (current != nullptr) {
        cout << current->data;
        if (current->next != nullptr) {
            cout << "->";
        }
        current = current->next;
    }

    cout << endl;

    // 释放内存,避免内存泄漏(推荐操作)
    current = n;
    while (current != nullptr) {
        node* temp = current;
        current = current->next;
        delete temp;
    }

    return 0;
}

关键说明

  • 构造函数仅负责初始化单个节点的属性,不用处理节点间的链接,所以初始next为nullptr完全合理。
  • 链表的核心是指针的指向关系,必须手动把前一个节点的next指向后一个节点,才能形成链式结构。
  • 遍历链表时,用临时指针从表头开始,不断移动到next,直到遇到nullptr(链表末尾)。
  • 用完链表后记得用delete释放每个节点的内存,避免内存泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:05:05