【发布时间】:2017-10-06 14:59:53
【问题描述】:
我正在学习使用 C++ 的数据结构课程,我们应该实现一个简单的单链表结构。
我已经找到了所有其他方法,但是当我检查列表是否为空时,程序崩溃,导致分段错误。
当列表为空时,我的链表结构应该如下所示:
HEAD -> NULL
如果它不是空的,它应该是这样的:
HEAD -> ...... -> NULL
我的 isListEmpty() 看起来像:
bool singleList::isListEmpty(void) {
return (head->next == NULL);
}
我很确定当我尝试访问空指针时核心被转储了,但我不确定在哪里。关于我应该在哪里看的任何建议?
谢谢。
--已编辑--
对不起,我不够清楚。
我很确定 head 本身不是空指针,因为在检查我的代码是否有效时,我使用了类似的东西:
list.list_insert_front(guy1);
list.list_insert_front(guy2);
list.list_remove(guy1);
list.list_remove(guy2);
list.isListEmpty(); //This line causes segmentation fault.
【问题讨论】:
-
您是否考虑过
head可能是NULL的可能性?无论如何,要么学习使用调试器,要么给我们提供minimal reproducible example。 -
您确定
head不是nullptr的空列表吗?这意味着默认构造函数(可能构造一个空列表)创建一个head。也许您打算检查head是否为nullptr以获得空列表。 -
您的插入和删除函数调用并不能确保
head不为空,您可能在函数内部添加或删除了错误的链接。将你的函数更改为head == null进行测试。
标签: c++ data-structures linked-list segmentation-fault null-pointer