アルゴリズムとプログラミング
基本情報技術者試験 科目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 回(公開問題での観測値)