私は数時間にわたってCで自分のLinkedListを作成しようとしています。正しく動作させることができません。なぜこのコードが間違っているのかを指摘してください。実際の動作は 'main'にスクロールします。C LinkedListは動作しません
何らかの理由で、「追加」は、最後の要素だけがそこに残るように、渡されたリストを変更するように見えます。私は再帰的かつ反復的にプログラムを何度も書き直しました。結果はいつもこれのようです。
int
main(){
struct List myList;
myList.head = NULL;
printList(&myList); // empty
add(&myList, 1);
printList(&myList); // 1 -> NULL
add(&myList, 2);
printList(&myList); // 2 -> NULL, should be 1 -> 2 -> NULL
add(&myList, 3);
printList(&myList); // 3 -> NULL, should be 1 -> 2 -> 3 -> NULL
add(&myList, 4);
printList(&myList); // 4 -> NULL, should be 1 -> 2 -> 3 -> 4 -> NULL
}
私も手順のいずれかの画期的な論理的欠陥があったかどうかを確認するために、他の言語でプログラムを再作成しましたが、他の場所で、私はそれがすぐに動作するようになりました。
while((curr -> next) != NULL){
curr = curr -> next;
}
これが正しいだが、その後、あなたは頭を変更している:あなたは最後の要素を探しているあなたのプログラムで
ただ、 '(追加ですべての変数の列を書き込み、一枚の紙を取る)'、そして '')(追加のコードの行ごとに行を記述します。各ステップでの各変数の値は?すぐに表示されます。 –
ジョハンズの返答は正しいですが、あなたのプログラムもひどく非効率です。リストの先頭に新しい要素を追加するか、リスト構造の最後のノードにポインタを格納する必要があります。それがリスト全体のポイントです。 – user31264
デバッガ.......................... –