遍历LinkedList时的分段错误

q.T*_*hen 0 c++ pointers linked-list

我是C++和一般指针的新手,但我似乎无法解释为什么我在两个几乎完全相同的代码之一中出现分段错误.我正在做一个简单的遍历a的任务LinkedList,这是我做的第一种方式:

Node * curNode = head; //Head is the pointer to the head of the LinkedList
while(curNode) {
    curNode = curNode->next;
}
Run Code Online (Sandbox Code Playgroud)

这会产生所需的结果并成功遍历整个LinkedList.但是,这会引发Segmentation fault错误:

Node * curNode = head;
while(curNode->next != NULL) {
    curNode = curNode->next;
}
Run Code Online (Sandbox Code Playgroud)

将条件更改为已转换的布尔值或!= nullptr不执行任何操作,因此条件不会引发true空指针.然而,我似乎无法弄清楚为什么我得到一个Segmentation fault,似乎适当的循环条件确保我不访问任何空指针.

asp*_*rge 5

我可以看到这个抛出段错误的唯一情况是head指针本身是NULL.

为了确保head不是这样NULL,以下应该可以工作并防止段错误:

Node * curNode = head;
if (head) {
    while(curNode->next != NULL) {
        curNode = curNode->next;
    }
}
Run Code Online (Sandbox Code Playgroud)