====== スタック ( Stack ) ====== 一般的な、アルゴリズムの説明で出てくるスタックの概念\\ * スタック(Stack):LIFO(Last-in First-out)なデータ構造 * Push:データを1つスタックに格納する操作 * Pop:スタックの一番上のデータを取り出す操作 (取り出したデータはスタックからは削除される) \\ 例: 整数を保存できるスタックがあるとする(大きさは考えなくていいよ(溢れない))\\ PUSH(1) PUSH(5) POP PUSH(7) PUSH(6) PUSH(4) POP POP PUSH(3) | - | - | - | - | - | - | 空のスタック ​   | 1 | - | - | - | - | - | Push(1)   | 5 | 1 | - | - | - | - | Push(5) 5 ← | 1 | - | - | - | - | - | Pop | 7 | 1 | - | - | - | - | Push(7) | 6 | 7 | 1 | - | - | - | Push(6) | 4 | 6 | 7 | 1 | - | - | Push(4) 4 ← | 6 | 7 | 1 | - | - | - | Pop 6 ← | 7 | 1 | - | - | - | - | Pop | 3 | 7 | 1 | - | - | - | Push(3)  で最後はこうなるよ ====== キュー ( Que ) ====== * キュー(Que):FIFO(First-in First-out)なデータ構造 * en-que(エンキュー):キューにデータを一個格納する操作 * de-que(デキュー):キューから1個データを取り出す操作 \\ 例: en-que(1) en-que(5) de-que en-que(7) en-que(6) en-que(4) de-que de-que en-que(3) en-que | - | - | - | - | - | - |→ | - | de-que | - | - | - | - | - | - |→ | 1 | en-que(1) | - | - | - | - | - | 5 |→ | 1 | en-que(5) | - | - | - | - | - | - |→ | 5 | →1 de-que | - | - | - | - | - | 7 |→ | 5 | en-que(7) ​ | - | - | - | - | 6 | 7 |→ | 5 | en-que(6) ​ | - | - | - | 4 | 6 | 7 |→ | 5 | en-que(4) | - | - | - | - | 4 | 6 |→ | 7 | →5 de-que | - | - | - | - | - | 4 |→ | 6 | →7 de-que | - | - | - | - | 3 | 4 |→ | 6 | en-que(4) ==== 教科書P172 問題1(H18年度 基本情報春試験 問12) ==== 空の状態のキューとスタックの二つのデータ構造がある。 次の手続を順に実行した場合,変数xに代入されるデータはどれか。 ここで,  データ y をスタックに挿入すること → push(y)  スタックからデータを取り出すこと →→ pop()  データ y をキューに挿入すること →→→ enq(y)  キューからデータを取り出すこと →→→→ deq() とそれぞれ表す。    1. push( a )    2. push( b )    3. enq( pop() )    4. enq( c )    5. push( d )    6. push( deq() )    7. *x* ← pop() \\ === 解答 === S| - | - | - | - | - | - | Q| - | - | - | - | - | - |→ | - | 1.push( a ) S| a | - | - | - | - | - | Q| - | - | - | - | - | - |→ | - | 2.push( b ) S| b | a | - | - | - | - | Q| - | - | - | - | - | - |→ | - | 3. enq( pop() ) S| a | - | - | - | - | - | Q| - | - | - | - | - | - |→ | b | 4. enq( c ) S| a | - | - | - | - | - | Q| - | - | - | - | - | c |→ | b | 5. push( d ) S| d | a | - | - | - | - | Q| - | - | - | - | - | c |→ | b | 6.push( deq() ) S| b | d | a | - | - | - | Q| - | - | - | - | - | - |→ | c | →b de-queしてSにpush 7. *x* ← pop() b(pop)←S| d | a | - | - | - | - | Q| - | - | - | - | - | - |→ | c | x ← b __答え)xにはbが代入される__