単独リンクリストからノードを削除する際に問題があります。最初のノードを削除しようとしていないとき。それは残りのリストのための緩い参照のようです。 誰かを助けることができますか? これは問題の関数です。リストの先頭と削除するノードのプレートをとります。リストからノードを削除する問題
Car * removeCarFromList(Car * list,char plate[]){
Car * current = list;
Car * previous = NULL;
while (current != NULL){
if (strcmp(current->plate,plate)==0&& previous == NULL){
list = current -> next;
current -> next = NULL;
return current;
break;
} else if (strcmp(current->plate,plate)==0&& previous != NULL){
previous -> next = current -> next;
current -> next = NULL;
return current;
break;
}
previous = current;
current = current -> next;
}
return NULL;
}
リストの最初のノード***は***の*リストアドレス*です。最初のノードを変更する場合は、リストアドレスとして保存されているアドレスも変更する必要があります。したがって、1)関数の新しい最初のノードアドレスを割り当てることができるように、リストの最初のノードの*アドレスを渡すか、または2)関数から新しいアドレスを返すように2つのオプションがあります。呼び出し元の新しいリストアドレス –