void delete()
{
if(root == NULL)
{
printf("ERROR EMPTY LIST.\n");
}
else
{
printf("Enter value: ");
scanf("%d",&target);
if(root->data == target)
{
root = root->next;
}
else
{
struct node *ptr = root;
struct node *prev = NULL;
while(ptr != NULL)
{
if(ptr->data == target)
{
break;
}else
{
prev->next = ptr;
ptr = ptr->next;
}
}
prev->next = ptr->next;
}
}
}
程序在必须遍历链表时崩溃,我认为它与指针ptr和prev有关。我的逻辑遍历列表,直到ptr进入包含目标数据的节点。一旦它突然离开循环并使prev指向节点ptr->接下来指向。
答案 0 :(得分:0)
如果目标数据不在根节点上,则转到第一个while
次迭代,然后使用prev->next = ptr;
到达其他地方,但prev
仍为NULL
} --->程序崩溃。
只需使用调试器 - 您就会很快发现此错误。