由于某种原因,此功能仅在我想要删除第一个或最后一个节点时起作用,但是当我在中间尝试某些东西时崩溃了该程序。对于为什么会发生这种情况的任何建议/想法?
void deleteNode(int partNumber)
{
struct Inventory *prev;
prev=first;
if(prev==NULL)
printf("\nError! No node!");
else if(first->partNum==partNumber)
first=first->next;
else {
while(prev!=NULL)
{
if(prev->next->partNum==partNumber)
{
prev->next=prev->next->next;
}
prev=prev->next;
}
}
}
printf("\nPlease enter the part number of what you would like to delete: ");//main
scanf("%d", &partDelete);
deleteNode(partDelete);
答案 0 :(得分:1)
你在这里取消引用空指针:
if(prev->next->partNum==partNumber)
此时prev
绝对有效,但prev->next
可能为NULL。