空のスタックに対して、A、B、Cの順にデータを格納(push)した。その後、データを1つ取り出し(pop)、Dを格納し、さらにデータを2つ取り出した。取り出されたデータの順序として正しいものはどれか。
- ①C、D、B
- ②A、B、D
- ③C、B、A
- ④D、C、B
答えと解説を見る
スタックは、最後に格納したデータを最初に取り出す後入れ先出し(LIFO:Last In First Out)のデータ構造です。操作を順に追います。
A、B、Cを格納 → 中身は下からA、B、C
1つ取り出す → C(残りはA、B)
Dを格納 → 下からA、B、D
2つ取り出す → D、次にB(残りはA)
したがって、取り出された順序は C、D、B です。
他の選択肢が不適切な理由
・A、B、D:先に格納したものから取り出すキュー(FIFO)として扱った場合に近い誤りです。
・C、B、A:Dの格納を無視して取り出した誤りです。
・D、C、B:操作の順序を取り違え、A、B、C、Dを全て格納してから3つ取り出した場合の結果です。1つ目の取出しはDを格納する前に行います。
覚え方のポイント
「スタック=積み重ねた皿(上から取る)」。関数の呼出しの管理や、逆ポーランド記法の計算などに使われます。