【问题标题】:Why isn't my deleteNode function working?为什么我的 deleteNode 功能不起作用?
【发布时间】:2014-05-13 02:00:33
【问题描述】:

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

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

【问题讨论】:

    标签: c function struct linked-list


    【解决方案1】:

    你在这里取消引用一个空指针:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多