2014-04-02 18 views
0

由於某種原因,此功能僅適用於當我想刪除第一個或最後一個節點時,但在中間嘗試某些內容時崩潰程序。任何建議/想法爲什麼發生這種情況?爲什麼我的deleteNode函數不工作?

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

回答

1

取消引用空指針就在這裏:

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

此時prev肯定是有效的,但prev->next可能是NULL。

相關問題