访问空指针以检查C ++中的链表是否为空

时间:2017-10-06 14:59:54

标签: c++ data-structures linked-list segmentation-fault null-pointer

我正在使用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.

3 个答案:

答案 0 :(得分:0)

大多数情况下,空列表head中只有null,而不是next

在初始化中查看两次,然后决定是否需要headnext null来查看overflow-x: scroll;

答案 1 :(得分:0)

Head是指针,用于保存列表中第一个节点的轨迹。如果list为空,则head应指向null。

当您尝试访问head-> next时,间接检查第一个节点(第二个节点)的下一个是否存在。

要查找列表是否为空,您需要检查head是否为NULL。

bool singleList::isListEmpty(void) {
    return (head == NULL);
}

答案 2 :(得分:0)

据我所知,即使你有一个单独的头节点,每次列表为空时它都会为空。

如果列表不为空,它将仅指向列表的第一个节点。

示例:

列表:A-> B-> C-> ...-> Z-> null 在这种情况下,你的头部将指向A.(而你的头部将是A.例如头部= A)

LIST:null(head = null)