Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 連結リストの走査と表示 | データ構造の実装
C構造体
セクション 5.  4
single

single

連結リストの走査と表示

メニューを表示するにはスワイプしてください

ノードの作成と接続方法を学んだ後は、このリストが正しく動作するかどうかを確認する必要があります。

そのために、リスト全体を表示する簡単な関数を作成します。

この関数は、リストの先頭(最初)のノードが格納されているメモリアドレスへのポインタを受け取ります。

void printList(struct Node* head) {}

その後、一時的なノード current を作成し、リスト全体を走査します。current ノードの内容は、現在のリストノードの内容と同じになります。

struct Node* current = head;

リストを走査するために、必要な条件を持つ while(){} ループを使用します。つまり、next フィールドが NULL であるノードが見つかるまで繰り返します。

Note
注意

temp(一時的)ノードはバッファノードの役割を果たします。これは、現在のノードの内容を一時的に保存(および削除)するために必要です。もし現在のノードをすぐに消去すると、次のノードとの接続が失われ、リストへのアクセスも失われます。

while (current != NULL) { }
printf("\n");

ループ内では、現在のノードの data フィールドの内容を表示し、next フィールドを変更して次のノードに進みます。

printf("%d ", current->data);
current = current->next;

次のフィールドがNULLと等しいノードが見つかった時点で、ループはノードの内容の表示を停止し、関数は終了する。

タスク

スワイプしてコーディングを開始

動的メモリ割り当てを用いた単純な単方向リンクリストの実装。課題は、関数 printListfreeList を完成させることです。

  1. パラメータ struct Node* head を持つ関数 printList を実装します。

    • printList 内で変数 current を宣言し、head で初期化します。
    • currentNULL でない間、while ループで繰り返します。
    • 各イテレーションで、currentdata フィールドを出力し、current を次のノードに進めます。
    • ループ終了後、出力を区切るために改行文字を出力します。
  2. freeList 内で変数 current を宣言し、head で初期化します。

    • currentNULL でない間、while ループで繰り返します。
    • ループ内で current を一時変数 temp に保存します。
    • current を次のノードに進めます。
    • temp に割り当てられたメモリを解放します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  4
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt