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

在VS Code中运行链表程序时出现a.exe已停止工作错误的原因?

链表调试错误分析与修复

错误根源

你的代码触发了空指针解引用问题:
执行 L.tail->next = new_node; 时,L.tail 初始值为 NULL,空指针不允许访问成员(next),这会引发未定义行为(通常表现为程序崩溃),导致后续打印操作无法正常执行。

修复方案

需要区分链表是否为空的场景:

  • 链表为空时(head 和 tail 均为 NULL),新节点既是头节点也是尾节点
  • 链表非空时,才通过 tail->next 挂载新节点,再更新 tail

修复后的完整代码:

#include <iostream>
using namespace std;

struct Node {
    int n;
    Node *next;
};

class LinkedList {
    public:
        Node *head = NULL;
        Node *tail = NULL;
};

int main() {
    LinkedList L;
    // 类内已初始化head和tail为NULL,以下两行可省略
    // L.head = NULL;
    // L.tail = NULL;

    Node *new_node = new Node();
    new_node->n = 1;
    new_node->next = NULL;
    
    // 处理空链表的特殊情况
    if (L.head == NULL) {
        L.head = new_node;
        L.tail = new_node;
    } else {
        L.tail->next = new_node;
        L.tail = new_node;
    }

    cout << L.tail << endl;
    cout << L.tail->next << endl;
}

额外优化提示

  • 可以给 LinkedList 类添加成员函数(如 addNode)封装节点添加逻辑,避免重复编写判断代码
  • 程序结束前记得释放链表节点内存,防止内存泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:17:09