由于某种原因,此功能仅在我要删除第一个或最后一个节点时才起作用,但是在中间尝试某些操作时会使程序崩溃。有什么建议/想法为什么会发生这种情况?

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);

最佳答案

您可以在此处取消引用空指针:

 if(prev->next->partNum==partNumber)


此时,prev绝对有效,但prev->next可能为NULL。

关于c - 为什么我的deleteNode函数不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22800397/

10-13 06:40