2014-04-02 8 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 일 수 있습니다.

관련 문제