アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20140727 実施分 問5
十分な大きさの配列 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免除 修了試験 20140727 実施分 問5
答えと解説を見る
正解:イ
覚える知識
スタックのLIFO特性(後入れ先出し)
スタックは、最後に格納したデータを最初に取り出す後入れ先出し(LIFO)のデータ構造である。
この問題で必要なこと
fはpを増やして格納(push)、gはA[p]を取り出してpを減らす(pop)ため、最後に入れたものを最初に取り出す後入れ先出しになる。
ひっかけ
先入れ先出しのキューと混同させる。
この知識の出題:本試験系 0 回・免除試験 8 回(公開問題での観測値)