newnode = head;
tempnode = head;
if (head)
{
while (tempnode)
{
if (tempnode->next != NULL)
{
cout << tempnode->labValue << " ";
tempnode = tempnode->next;
}
}
}
所以我有这个代码搜索我创建的链表并打印它的值。它成功地打印了每个值,但随后它进入了sig错误。我看了一遍,每次尝试的东西,我仍然得到sig错误。我假设我得到错误,因为我正在尝试访问不存在的内存,所以我尝试使用while循环和if语句进行检查,但仍然没有运气。我很抱歉,如果这是一个常见的问题,我很沮丧。
答案 0 :(得分:1)
链表的末尾可能不会以空值终止。如果您没有明确地将尾节点的下一个指针设置为null,则下一个指针可能指向垃圾(例如未初始化的数据)。指针值不会为空,这就是你进入循环并崩溃的原因。
在while循环处放置一个断点并验证它。
顺便说一句,将nullptr
用于空指针值非常有用。在tempnode->next == NULL
时,你还需要突破while循环,因为tempnode在那时不会为null。