我該如何去除鏈接列表中的節點?C從鏈表中刪除節點
這裏是我的代碼:
void RemoveNode(Node * node, Node ** head) {
if (strcmp(node->state, (*(*head)->next).state) == 0) {
Node * temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node * current = (*head)->next;
Node * previous = *head;
while (current != NULL && previous != NULL) {
if (strcmp(node->state, (*current->next).state) == 0) {
Node * temp = current;
previous->next = current->next;
free(temp);
return;
}
current = current->next;
previous = previous->next;
}
return;
}
但我不斷收到賽格故障。
我覺得我在做一些愚蠢的事情....任何想法?
爲什麼'previous = previous-> next'而不是'previous = current'在重新分配當前之前? –
另外,如果出現段錯誤,請在調試器中運行程序。它會在你遇到問題的地方停下來,讓你檢查一下調用堆棧和變量。至少你應該編輯你的問題以包含調用堆棧,並指出在提供的代碼中崩潰發生的位置。 –
另外,你是否總是*有一個有效的'(* head) - > next'指針?如果清單是空的呢?如果列表中只有一個節點會怎麼樣? –