配列は長さが予め決まったデータの列である。このデータの列の長さを可変にすると色々と便利であろう。
しかしこれにはもはやデータ構造として配列は使用できない。
代わりにリスト構造のデータ構造を使う。リスト構造はちょうどコインロッカーを複数借りるのとよく似ている。
つまり各ロッカーには次のロッカーの鍵を入れておき、中身を取り出す際には、順番に鍵を開けていくというものである。
新たに追加でロッカーが必要になれば別のロッカーを借りて、その鍵を一番最後のロッカーの中にしまうようにすれば、荷物が増えても大丈夫である。
キーボードから入力した数だけのロッカーを割り付け、各ロッカーにキーボードから入力したデータを保存し、最後に保存した内容を表示するプログラムkadai9-1.cを次のステップにしたがって作成せよ。
但し、各ロッカーには次のロッカーへのポインター(次のロッカーの鍵と思えばわかりやすい)も荷物に相当するデータといっしょに保存するものとする。
1-1 データ構造として次の構造体を用意する。
struct rocker {
int data; //保存するデータ
struct rocker *next; //次のボックスのアドレス(鍵)
};
1-2 最初の鍵として次のポインターを大域変数として用意する。
struct rocker *head;
1-3 1個のロッカーを割り当てて、最後に割り当てたロッカーlast_rockerのlast_locker->nextに新しく割り当てたロッカーのアドレス(鍵)を保存する関数 struct rocker *new_rocker(struct rocker *last_rocker)を定義しなさい。ただし引数 last_rockerは最後に作ったボックスのポインターとする。この間数は新しく割り当てたロッカーのアドレスを返すものとする。
1-4 全てのロッカーに保存したデータを最初のロッカーから順番に表示していく関数 void display_rockers(struct rocker *pt)を定義しなさい。
ただし、実行結果が次のようになるように定義しなさい。
gcc kadai9-1.c
./a.out
3 説明:ロッカーの数を入力
1 3 4 データ入力
[ data = 1 ]->[ data = 3 ]->[ data = 4 ] 表示
※ 表示部分では printf("[ data = %d ]->", xxxxx); もしくは printf("[ data = %d ]\n", xxxxxx);を使用する。
6YWN5YiX44Gv6ZW344GV44GM5LqI44KB5rG644G+44Gj44Gf44OH44O844K/44Gu5YiX44Gn44GC44KL44CC44GT44Gu44OH44O844K/44Gu5YiX44Gu6ZW344GV44KS5Y+v5aSJ44Gr44GZ44KL44Go6Imy44CF44Go5L6/5Yip44Gn44GC44KN44GG44CCCuOBl+OBi+OBl+OBk+OCjOOBq+OBr+OCguOBr+OChOODh+ODvOOCv+ani+mAoOOBqOOBl+OBpumFjeWIl+OBr+S9v+eUqOOBp+OBjeOBquOBhOOAggrku6Pjgo/jgorjgavjg6rjgrnjg4jmp4vpgKDjga7jg4fjg7zjgr/mp4vpgKDjgpLkvb/jgYbjgILjg6rjgrnjg4jmp4vpgKDjga/jgaHjgofjgYbjganjgrPjgqTjg7Pjg63jg4Pjgqvjg7zjgpLopIfmlbDlgJ/jgorjgovjga7jgajjgojjgY/kvLzjgabjgYTjgovjgIIK44Gk44G+44KK5ZCE44Ot44OD44Kr44O844Gr44Gv5qyh44Gu44Ot44OD44Kr44O844Gu6Y2144KS5YWl44KM44Gm44GK44GN44CB5Lit6Lqr44KS5Y+W44KK5Ye644GZ6Zqb44Gr44Gv44CB6aCG55Wq44Gr6Y2144KS6ZaL44GR44Gm44GE44GP44Go44GE44GG44KC44Gu44Gn44GC44KL44CCCuaWsOOBn+OBq+i/veWKoOOBp+ODreODg+OCq+ODvOOBjOW/heimgeOBq+OBquOCjOOBsOWIpeOBruODreODg+OCq+ODvOOCkuWAn+OCiuOBpuOAgeOBneOBrumNteOCkuS4gOeVquacgOW+jOOBruODreODg+OCq+ODvOOBruS4reOBq+OBl+OBvuOBhuOCiOOBhuOBq+OBmeOCjOOBsOOAgeiNt+eJqeOBjOWil+OBiOOBpuOCguWkp+S4iOWkq+OBp+OBguOCi+OAggrjgIDjgq3jg7zjg5zjg7zjg4njgYvjgonlhaXlipvjgZfjgZ/mlbDjgaDjgZHjga7jg63jg4Pjgqvjg7zjgpLlibLjgorku5jjgZHjgIHlkITjg63jg4Pjgqvjg7zjgavjgq3jg7zjg5zjg7zjg4njgYvjgonlhaXlipvjgZfjgZ/jg4fjg7zjgr/jgpLkv53lrZjjgZfjgIHmnIDlvozjgavkv53lrZjjgZfjgZ/lhoXlrrnjgpLooajnpLrjgZnjgovjg5fjg63jgrDjg6njg6BrYWRhaTktMS5j44KS5qyh44Gu44K544OG44OD44OX44Gr44GX44Gf44GM44Gj44Gm5L2c5oiQ44Gb44KI44CCCuS9huOBl+OAgeWQhOODreODg+OCq+ODvOOBq+OBr+asoeOBruODreODg+OCq+ODvOOBuOOBruODneOCpOODs+OCv+ODvO+8iOasoeOBruODreODg+OCq+ODvOOBrumNteOBqOaAneOBiOOBsOOCj+OBi+OCiuOChOOBmeOBhO+8ieOCguiNt+eJqeOBq+ebuOW9k+OBmeOCi+ODh+ODvOOCv+OBqOOBhOOBo+OBl+OCh+OBq+S/neWtmOOBmeOCi+OCguOBruOBqOOBmeOCi+OAggoKMS0xIOODh+ODvOOCv+ani+mAoOOBqOOBl+OBpuasoeOBruani+mAoOS9k+OCkueUqOaEj+OBmeOCi+OAggpzdHJ1Y3Qgcm9ja2VyIHsKICAgIGludCBkYXRhOyAvL+S/neWtmOOBmeOCi+ODh+ODvOOCvwogICAgc3RydWN0IHJvY2tlciAqbmV4dDsgLy/mrKHjga7jg5zjg4Pjgq/jgrnjga7jgqLjg4njg6zjgrko6Y21KQp9OwoKMS0yIOacgOWIneOBrumNteOBqOOBl+OBpuasoeOBruODneOCpOODs+OCv+ODvOOCkuWkp+Wfn+WkieaVsOOBqOOBl+OBpueUqOaEj+OBmeOCi+OAggpzdHJ1Y3Qgcm9ja2VyICpoZWFkOwoKMS0zIO+8keWAi+OBruODreODg+OCq+ODvOOCkuWJsuOCiuW9k+OBpuOBpuOAgeacgOW+jOOBq+WJsuOCiuW9k+OBpuOBn+ODreODg+OCq+ODvGxhc3Rfcm9ja2Vy44GubGFzdF9sb2NrZXItPm5leHTjgavmlrDjgZfjgY/libLjgorlvZPjgabjgZ/jg63jg4Pjgqvjg7zjga7jgqLjg4njg6zjgrnvvIjpjbXvvInjgpLkv53lrZjjgZnjgovplqLmlbAgc3RydWN0IHJvY2tlciAqbmV3X3JvY2tlcihzdHJ1Y3Qgcm9ja2VyICpsYXN0X3JvY2tlcinjgpLlrprnvqnjgZfjgarjgZXjgYTjgILjgZ/jgaDjgZflvJXmlbAgbGFzdF9yb2NrZXLjga/mnIDlvozjgavkvZzjgaPjgZ/jg5zjg4Pjgq/jgrnjga7jg53jgqTjg7Pjgr/jg7zjgajjgZnjgovjgILjgZPjga7plpPmlbDjga/mlrDjgZfjgY/libLjgorlvZPjgabjgZ/jg63jg4Pjgqvjg7zjga7jgqLjg4njg6zjgrnjgpLov5TjgZnjgoLjga7jgajjgZnjgovjgIIKCjEtNCDlhajjgabjga7jg63jg4Pjgqvjg7zjgavkv53lrZjjgZfjgZ/jg4fjg7zjgr/jgpLmnIDliJ3jga7jg63jg4Pjgqvjg7zjgYvjgonpoIbnlarjgavooajnpLrjgZfjgabjgYTjgY/plqLmlbAgdm9pZCBkaXNwbGF5X3JvY2tlcnMoc3RydWN0IHJvY2tlciAqcHQp44KS5a6a576p44GX44Gq44GV44GE44CCCuOBn+OBoOOBl+OAgeWun+ihjOe1kOaenOOBjOasoeOBruOCiOOBhuOBq+OBquOCi+OCiOOBhuOBq+Wumue+qeOBl+OBquOBleOBhOOAggoKZ2NjIGthZGFpOS0xLmMKLi9hLm91dAozIOOAgOOAgOOAgOOAgOOAgOiqrOaYju+8muODreODg+OCq+ODvOOBruaVsOOCkuWFpeWKmwoxIDMgNCDjgIDjgIDjgIDjgIDjgIAgICDjg4fjg7zjgr/lhaXlipsKWyBkYXRhID0gMSBdLT5bIGRhdGEgPSAzIF0tPlsgZGF0YSA9IDQgXeOAgOOAgOOAgOOAgOOAgOOAgOOAgOihqOekugoK4oC7IOihqOekuumDqOWIhuOBp+OBryBwcmludGYoIlsgZGF0YSA9ICVkIF0tPiIsIHh4eHh4KTsg44KC44GX44GP44GvIHByaW50ZigiWyBkYXRhID0gJWQgXVxuIiwgeHh4eHh4KTvjgpLkvb/nlKjjgZnjgovjgIIK