c++ - 调试链表指针代码:分段错误
问题描述
所以下面的代码:
/*
* For your reference:
*
* SinglyLinkedListNode {
* int data;
* SinglyLinkedListNode* next;
* };
*
*/
SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
SinglyLinkedListNode* temp = head;
while (temp != NULL) {
temp = temp->next;
}
SinglyLinkedListNode* temp1;
temp1->data = data;
temp1->next = NULL;
temp->next = temp1;
return temp;
}
所以,基本上我想在链表“头”的末尾添加“数据”并返回更新的列表。那么错在哪里呢?
编辑:好的,我得到了第一个错误。但是即使我在循环条件中将 temp!=NULL 替换为 temp->next!=NULL 仍然存在此错误
解决方案
您必须为节点分配内存。记得清理分配的内存。每次打电话给new
你,你都需要一个电话delete
。因此我更喜欢智能指针。
在您的循环temp
包含NULL
. 您不能取消引用空指针。
SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
SinglyLinkedListNode* temp1 = new SinglyLinkedListNode;
temp1->data = data;
temp1->next = nullptr;
if (!head) {
head = temp1;
return head;
}
SinglyLinkedListNode* temp = head;
while(temp->next){
temp = temp->next;
}
temp->next = temp1;
return temp;
}
推荐阅读
- javascript - 如何使路由器链接与自定义链接组件一起使用?
- pip - Python:安装最新版本后没有 Pip
- xml - XSLT 文档功能在 chrome 中不起作用
- raspberry-pi - 如何在 openwrt 中收集系统日志?
- wordpress - Wordpress 问题 - Google 字体呈现方式不同
- python - PyQt5 多线程仍然冻结。如何提高性能?
- c++ - C++矩阵数学新手查询
- .net - 在 Windows 服务应用程序中使用 MediatR 和 CQRS
- r - How to export/read an empty dataframe in R?
- angular - Angular 和 html5 日期无效输入问题