応用情報技術者 2012年 秋期 午前2 問05
問題文
配列を用いてスタックを実現する場合の構成要素として、最低限必要なものはどれか。
選択肢
ア:スタックに最後に入った要素を示す添字の変数(正解)
イ:スタックに最初に入った要素と最後に入った要素を示す添字の変数
ウ:スタックに一つ前に入った要素を示す添字の変数を格納する配列
エ:スタックの途中に入っている要素を示す添字の変数
配列を用いてスタックを実現する場合の構成要素【午前2 解説】
要点まとめ
- 結論:スタック実装に最低限必要なのは「最後に入った要素を示す添字の変数」である。
- 根拠:スタックはLIFO(後入れ先出し)構造であり、最新の要素位置を管理すれば操作が可能。
- 差がつくポイント:最初や途中の要素の添字は不要で、余計な管理は実装の複雑化と誤動作の原因になる。
正解の理由
スタックは「最後に入れた要素(トップ)」を基準に操作を行います。配列で実装する場合、トップの添字を示す変数があれば、プッシュ(追加)やポップ(削除)が簡単に行えます。
選択肢アはこの「最後に入った要素を示す添字の変数」を指しており、これだけでスタックの基本操作が可能です。
選択肢アはこの「最後に入った要素を示す添字の変数」を指しており、これだけでスタックの基本操作が可能です。
よくある誤解
スタックの全要素の位置を管理しようとすると混乱します。最初に入った要素や途中の要素の添字はスタック操作に直接不要です。
解法ステップ
- スタックの基本動作(プッシュ・ポップ)を理解する。
- 配列での実装では「トップ」を示す添字が必要と認識する。
- 選択肢の中から「最後に入った要素の添字」を示す変数を選ぶ。
- 他の添字変数は不要であることを確認する。
選択肢別の誤答解説
- イ: 最初と最後の両方の添字は不要。最初の要素はスタック操作に直接関係しない。
- ウ: 「一つ前に入った要素の添字を格納する配列」は過剰であり、スタックの基本実装には不要。
- エ: 「途中に入っている要素の添字」はスタックのLIFO操作には関係なく、管理不要。
補足コラム
スタックはLIFO構造であり、配列実装では「トップポインタ」と呼ばれる添字変数が重要です。トップポインタは-1(空)から始まり、プッシュ時にインクリメント、ポップ時にデクリメントします。これにより配列のどこに最新要素があるかを常に把握できます。
FAQ
Q: スタックの「トップ」とは何ですか?
A: スタックで最後に追加された要素の位置を示す添字のことです。
A: スタックで最後に追加された要素の位置を示す添字のことです。
Q: なぜ最初に入った要素の添字は不要ですか?
A: スタックはLIFOなので、操作は常に最新の要素(トップ)に対して行うためです。
A: スタックはLIFOなので、操作は常に最新の要素(トップ)に対して行うためです。
関連キーワード: スタック、配列実装、LIFO, トップポインタ、データ構造

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

