2012-04-13 165 views
-1

我很難搞清楚爲什麼我的刪除功能不起作用。這是一個布爾值,如果一個項目被刪除,它需要返回。任何幫助,將不勝感激從單個鏈接列表中刪除一個節點C

boolean delete(SLL *list, String str){ 
    NODE *current, *previous,*temp; 
    temp=malloc(sizeof(Employee)); 
    previous=NULL; 
    current = list -> head; 


    while(current->next!=NULL) { 
     if(strcmp(current->anEmployee->name, str) == 0){ 
      if(current=list->head){ 
       list->head=current->next; 
      } 

      if(previous->next == NULL){//item not found in list 
       return 0; 
      } 
     else { //current is to be deleted 
      temp->next=current->next; 
      previous->next=temp->next; 

      return 1; 
     } 
    } 
} 
+0

什麼不行呢? – 2012-04-13 20:01:02

+3

if(current = list-> head){ 應該是==嗎? – strkol 2012-04-13 20:01:53

+1

也有你在函數中有內存泄漏,不需要臨時變量 – strkol 2012-04-13 20:10:01

回答

2

你如果在那裏你比較當前的列表 - >頭(根列表中的節點,初步)語句,被分配節點的電流,而不是比較它。

+0

謝謝。但仍然沒有刪除。 – 2012-04-13 20:13:15

+0

在循環的內部,您推進列表的根節點(即:list-> head)而不是當前節點,所以字符串比較只是比較list-> head的名稱和傳入的名稱。它會是值得你花時間閱讀Sangeeths鏈接,關於從鏈表中刪除節點。 – thelazydeveloper 2012-04-13 20:42:12

+0

此外,前一個指針設置爲NULL - 如果傳入的字符串不匹配list-> head的名稱,它應該seg段。 – thelazydeveloper 2012-04-13 20:50:32