アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20171210 実施分 問6

十分な大きさの配列Aと初期値が0の変数pに対して,関数f(x)とg()が次のとおり定義されている。配列Aと変数pは,関数f(x)とg()だけでアクセスが可能である。これらの関数が操作するデータ構造はどれか。
function f(x) { p = p+1; A[p] = x; return None; } function g() { x = A[p]; p = p-1; return x; }
  • ア キュー
  • イ スタック
  • ウ ハッシュ
  • エ ヒープ

出典:基本情報技術者試験 科目A免除 修了試験 20171210 実施分 問6

答えと解説を見る

正解:イ

覚える知識

スタックのpush/popトレース

スタックは一端でのみ追加・取出しを行い、最後に入れたデータを最初に取り出すデータ構造である。

この問題で必要なこと

f(x)はpを増やしてA[p]に格納、g()はA[p]を取り出してpを減らす。同じ端でpush/popするのでLIFOのスタック。

ひっかけ

キューは入れる端と取り出す端が別。ヒープは優先度付き木構造、ハッシュはキー変換であり、この操作とは異なる。

この知識の出題:本試験系 5 回・免除試験 4 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「スタックとキュー(LIFO と FIFO)」で学ぶ

同じ知識の過去問