5 課題

以下の課題を実施し,レポートとして提出すること.
[1]
(復予)教科書 [1]のpp.170-217を3回読め.レポートには 「3回読んだ」と書け.
[2]
(復)本日配布したプリントを2回読め.レポートには「2回読んだ」と書け.
[3]
(復)スタックとキューについて,以下の操作を定義する.
PUSH($ n$) :スタックにデータ$ n$をプッシュする.戻り値は無し.
POP() :スタックからデータをポップする.戻り値は,取り出した値.
ENQ($ n$) :キューにデータ$ n$を追加する.戻り値はなし.
DEQ() :キューからデータを取り出す.戻り値は取り出した値.
空のスタックやキューに対して,以下の操作を行ったとき,データ構造の様子を図で示せ.
(1)
PUSH(3) $ \rightarrow$PUSH(5) $ \rightarrow$POP() $ \rightarrow$PUSH(2) $ \rightarrow$PUSH(1) $ \rightarrow$POP() $ \rightarrow$POP() $ \rightarrow$PUSH(1) $ \rightarrow$POP() $ \rightarrow$PUSH(7)
(2)
ENQ(6) $ \rightarrow$ENQ(2) $ \rightarrow$DEQ() $ \rightarrow$ENQ(7) $ \rightarrow$DEQ() $ \rightarrow$ENQ(3) $ \rightarrow$ENQ(1) $ \rightarrow$ENQ(2) $ \rightarrow$DEQ() $ \rightarrow$DEQ()
(3)
PUSH(3) $ \rightarrow$ENQ(POP()) $ \rightarrow$PUSH(8) $ \rightarrow$PUSH(5) $ \rightarrow$ENQ(POP()) $ \rightarrow$PUSH(DEQ()) $ \rightarrow$ENQ(2)
[4]
(復)キーボードから整数を10個入力する.読み込んだ整数を入力順と逆順 に表示するプログラムを作成せよ.ただし,教科書の「stack.h」と 「stack.c」,「queue.h」と「queue.c」はそのまま使うとする.これらの 教科書のプログラムは記述する必要はない.自分が書いたプログラムのみ 書け.
[5]
前問のプログラムのコンパイル方法を示せ.
[6]
「stack.h」と「stack.c」では,どのようにしてスタックおよびその操作 を行っているか? レポート用紙1枚程度にまとめよ.このプログラムを理解 することが重要.
[7]
「queue.h」と「queue.c」では,どのようにしてキューおよびその操作 を行っているか? レポート用紙1枚程度にまとめよ.このプログラムを理解 することが重要.
[8]
逆ポーランド記法で書かれた,以下の計算結果を示せ.

  $\displaystyle (1)$   12    45    +    
  $\displaystyle (2)$   4    3    +    5    1    4    /    3    2    +    +    23    10    2    +    4    -    8    +    

[9]
(復)ここでの学習内容でわからないところがあれば,具体的に記述せよ.

提出要領はいつものとおり.ただし,期限は7月17日(火)AM 8:45,課題名は「課題 スタッ クとキュー」とすること.


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年7月10日


no counter