2017-05-08 155 views
-1

我想要做的是檢查值之後的節點是否是特定的數字,如果是,則刪除先前節點。 類似於:C++刪除單個鏈接列表中的另一個節點

1,2,3,4,5,4 如果下一個節點號爲4,則刪除此節點。 1,2,3,4,5,4 - > 1,2,4,4

node* temp = head; 
while (head != NULL) { 
    if (head->next->number == 4) { 
     delete temp; 
    } 
    head = head->next; 
} 

在這一刻如編譯器崩潰掙扎。

+1

您需要包括你得到什麼錯誤。 – Carcigenicate

+0

進程返回255 @CodeBlocks。 – Brock

+1

就像一個參考,你是編譯器可能會崩潰,因爲你檢查'head!= NULL',但是然後你調用'head-> next-> number'。所以'head'可能不是NULL,但是你不能保證'head-> next!= NULL',除非你明確檢查。 – LeoVannini

回答

1

你提前之前,您刪除頭:

node *temp = NULL; 
while (head->next != NULL) { 
    if (head->next->number == 4) { 
     temp = head; 
    } 
    if (temp == NULL){ 
     head = head->next; 
    } 
    else{ 
     head = head->next->next; 
     delete temp; 
     temp= NULL: 
    } 
}