fork download
  1. 配列は長さが予め決まったデータの列である。このデータの列の長さを可変にすると色々と便利であろう。
  2. しかしこれにはもはやデータ構造として配列は使用できない。
  3. 代わりにリスト構造のデータ構造を使う。リスト構造はちょうどコインロッカーを複数借りるのとよく似ている。
  4. つまり各ロッカーには次のロッカーの鍵を入れておき、中身を取り出す際には、順番に鍵を開けていくというものである。
  5. 新たに追加でロッカーが必要になれば別のロッカーを借りて、その鍵を一番最後のロッカーの中にしまうようにすれば、荷物が増えても大丈夫である。
  6.  キーボードから入力した数だけのロッカーを割り付け、各ロッカーにキーボードから入力したデータを保存し、最後に保存した内容を表示するプログラムkadai9-1.cを次のステップにしたがって作成せよ。
  7. 但し、各ロッカーには次のロッカーへのポインター(次のロッカーの鍵と思えばわかりやすい)も荷物に相当するデータといっしょに保存するものとする。
  8.  
  9. 1-1 データ構造として次の構造体を用意する。
  10. struct rocker {
  11. int data; //保存するデータ
  12. struct rocker *next; //次のボックスのアドレス(鍵)
  13. };
  14.  
  15. 1-2 最初の鍵として次のポインターを大域変数として用意する。
  16. struct rocker *head;
  17.  
  18. 1-3 1個のロッカーを割り当てて、最後に割り当てたロッカーlast_rockerのlast_locker->nextに新しく割り当てたロッカーのアドレス(鍵)を保存する関数 struct rocker *new_rocker(struct rocker *last_rocker)を定義しなさい。ただし引数 last_rockerは最後に作ったボックスのポインターとする。この間数は新しく割り当てたロッカーのアドレスを返すものとする。
  19.  
  20. 1-4 全てのロッカーに保存したデータを最初のロッカーから順番に表示していく関数 void display_rockers(struct rocker *pt)を定義しなさい。
  21. ただし、実行結果が次のようになるように定義しなさい。
  22.  
  23. gcc kadai9-1.c
  24. ./a.out
  25. 3      説明:ロッカーの数を入力
  26. 1 3 4       データ入力
  27. [ data = 1 ]->[ data = 3 ]->[ data = 4 ]       表示
  28.  
  29. ※ 表示部分では printf("[ data = %d ]->", xxxxx); もしくは printf("[ data = %d ]\n", xxxxxx);を使用する。
  30.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty