访问空指针以检查 C++ 中的链表是否为空
accessing null pointers to check if linked list is empty in C++
我正在使用 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
,而不是 next
。
仔细检查初始化,然后决定是否需要检查 head
还是next
null
ity。
Head 是跟踪列表第一个节点的指针。如果列表为空,则 head 应指向 null。
当您尝试访问 head->next 时,间接地检查第一个节点(第二个节点)的 next 是否存在。
要确定列表是否为空,您需要检查 head 是否为 NULL。
bool singleList::isListEmpty(void) {
return (head == NULL);
}
据我了解,即使您应该有一个单独的头节点,每次列表为空时它也将为 null。
如果列表不为空,它只会指向列表的第一个节点。
示例:
列表:A->B->C->...->Z->空
在这种情况下,您的头将指向 A。(您的 HEAD 将指向 A。例如 head = A)
列表:空(头=空)
我正在使用 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
,而不是 next
。
仔细检查初始化,然后决定是否需要检查 head
还是next
null
ity。
Head 是跟踪列表第一个节点的指针。如果列表为空,则 head 应指向 null。
当您尝试访问 head->next 时,间接地检查第一个节点(第二个节点)的 next 是否存在。
要确定列表是否为空,您需要检查 head 是否为 NULL。
bool singleList::isListEmpty(void) {
return (head == NULL);
}
据我了解,即使您应该有一个单独的头节点,每次列表为空时它也将为 null。
如果列表不为空,它只会指向列表的第一个节点。
示例:
列表:A->B->C->...->Z->空 在这种情况下,您的头将指向 A。(您的 HEAD 将指向 A。例如 head = A)
列表:空(头=空)