single
連結リストの走査と表示
メニューを表示するにはスワイプしてください
ノードの作成と接続方法を学んだ後は、このリストが正しく動作するかどうかを確認する必要があります。
そのために、リスト全体を表示する簡単な関数を作成します。
この関数は、リストの先頭(最初)のノードが格納されているメモリアドレスへのポインタを受け取ります。
void printList(struct Node* head) {}
その後、一時的なノード current を作成し、リスト全体を走査します。current ノードの内容は、現在のリストノードの内容と同じになります。
struct Node* current = head;
リストを走査するために、必要な条件を持つ while(){} ループを使用します。つまり、next フィールドが NULL であるノードが見つかるまで繰り返します。
temp(一時的)ノードはバッファノードの役割を果たします。これは、現在のノードの内容を一時的に保存(および削除)するために必要です。もし現在のノードをすぐに消去すると、次のノードとの接続が失われ、リストへのアクセスも失われます。
while (current != NULL) { }
printf("\n");
ループ内では、現在のノードの data フィールドの内容を表示し、next フィールドを変更して次のノードに進みます。
printf("%d ", current->data);
current = current->next;
次のフィールドがNULLと等しいノードが見つかった時点で、ループはノードの内容の表示を停止し、関数は終了する。
スワイプしてコーディングを開始
動的メモリ割り当てを用いた単純な単方向リンクリストの実装。課題は、関数 printList と freeList を完成させることです。
-
パラメータ
struct Node* headを持つ関数printListを実装します。printList内で変数currentを宣言し、headで初期化します。currentがNULLでない間、whileループで繰り返します。- 各イテレーションで、
currentのdataフィールドを出力し、currentを次のノードに進めます。 - ループ終了後、出力を区切るために改行文字を出力します。
-
freeList内で変数currentを宣言し、headで初期化します。currentがNULLでない間、whileループで繰り返します。- ループ内で
currentを一時変数tempに保存します。 currentを次のノードに進めます。tempに割り当てられたメモリを解放します。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください