リンクリストからノードを削除するにはどうすればよいですか?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-> next'代わりに電流を再割り当てする前に、ちょうど'以前= current'の? –
また、セグメンテーションフォルトが発生した場合は、デバッガでプログラムを実行してください。問題が発生した場所で停止し、コールスタックと変数を調べます。少なくとも、コールスタックを含めるように質問を編集し、提供されたコードのどこでクラッシュが発生するかを指摘してください。 –
また、常に '(* head) - > next'ポインタを持っていますか?リストが空の場合はどうなりますか?リストにノードが1つしかない場合はどうなりますか? –