yyyytスタック(stack)

スタック(stack)とは

スタックとは、後から記録したデータを先に取り出すLIFO(Last-In First-Out)方式のデータ構造

プッシュ(push)・・・スタックにデータを格納すること

ポップ(pop)・・・スタックからデータを取り出すこと

スタックが利用されるのは

関数や手続を呼び出す際に、戻り番地や処理途中のデータを一時的に保存するために利用される

戻り番地をスタックで管理する

 

キュー(queue)

キューとは、先に記録したデータを先に取り出すFIFO(First-In First-Out)方式のデータ構造
待ち行列ともよばれる

エンキュー(enq)・・・キューにデータを格納すること

デキュー(deq)・・・キューからデータを取り出すこと

 

例題1 A,R,Sの順に到着するデータに対して、一つのスタックだけを用いて出力不可能なデータ列はどれか。

ア A、S、R  イ R、S、A  ウ R、A、S  エ S、A、R

ア  A、S、R を試してみる

例題2 待ち行列に対する操作を、次のとおり定義する。

ENQ n  :  待ち行列にデータnを挿入する。

DEQ  :  待ち行列からデータを取り出す。

空の待ち行列に対し、ENQ A, ENQ B, ENQ C, DEQ, ENQ D, ENQ E, DEQの操作を行った。次のDEQの操作で取り出される文字は何か。

次のように書いて答えを求める

確認問題

1.( a )とは、後から記録したデータを先に取り出す( b )方式のデータ構造

2.スタックにデータを格納することを( a )という

3.スタックからデータを取り出すことを( a )という

4.スタックは、関数や手続を呼び出す際に、( a )や( b )を一時的に保存するために利用される

5.( a )とは、先に記録したデータを先に取り出す( b )方式のデータ構造

6.キューにデータを格納することを( a )という

7.キューからデータを取り出すこと( a )という

 

基本情報対策問題

1.A、B、C、Dの順に到着するデータに対して、一つのスタックだけを用いて出力可能なデータ列はどれか。

ア A、D、B、C  イ B、D、A、C  ウ C、B、D、A  エ D、C、A、B

2.空のスタックに対して次の操作を行った場合、スタックに残っているデータはどれか。ここで、“push x ”はスタックへデータx を格納し、“pop”はスタックからデータを取り出す操作を表す。

push 1 → push 2 → pop → push 3 → push 4 → pop → push 5 → pop

ア 1と3  イ 2と4  ウ 2と5  エ 4と5

3.空の待ち行列に対し、ENQ 1, ENQ 2, ENQ 3, DEQ, ENQ 4, ENQ 5, DEQ, ENQ 6, DEQ, DEQの操作を行った。次のDEQの操作で取り出される値はどれか。

ア 1  イ 2  ウ 5  エ 6