c++ - 链表简单代码异常处理错误来了,程序失败
问题描述
我正在尝试实现非常简单的链表代码,但发生了未处理的异常错误。我想从一开始就访问第二个元素数据我在将它打印到 Visual Studio 时出错。出现异常处理错误,程序停止工作。
错误是:0
LinkedList.exe 中 0x00105485 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000
class Node{
public:
int data;
Node *next;
};
int main() {
Node *p = new Node();
p->data = 10;
p->next = NULL;
Node *q = new Node();
q->data = 9;
q->next = NULL;
//now print this
p->next->data
system("pause");
}
解决方案
您正在定义p->next = NULL
然后尝试阅读p->next->data
. 这意味着您正在尝试从中读取数据NULL
。如果你想从你的节点创建一个链表,你需要自己链接它们,IE 做这样的事情:
Node *p = new Node();
p->data = 10;
p->next = NULL;
Node *q = new Node();
q->data = 9;
q->next = NULL;
p->next = q; // Link the two nodes
//now print this
std::cout << p->next->data;
system("pause");
推荐阅读
- swift - 如何在 Swift Combine 中的数组 CurrentValueSubject 的各个元素上应用 .filter 运算符?
- floating-point - pytorch 中的机器精度是多少?什么时候应该使用双精度?
- c# - 部署连接到 RavenDB 的 ASP NET Core 应用程序
- php - 即使禁用输出,PHP header() 也不会重定向
- javacard - 如何从 Javacard 制作 EMV 卡?
- javascript - React Helmet 将一个 javascript 对象注入到 head 标签中
- node.js - 尝试以快递方式发布时请求正文未定义
- javascript - 下拉选项 - 使用键盘快捷键选择
- scala - 斯卡拉 | 如何获取对象引用进行比较?
- sql - 如何根据另一个事件的时间戳按顺序找到最近的事件