基本情報技術者試験 |
2012年度 = 平成24年度・春期 |
午前 |
問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;
}
ア キュー
| イ スタック
| ウ ハッシュ
| エ ヒープ
|
イ
関数f(x)は、pの値を1だけ増やしてからA[p]にxを代入する関数であり、関数g()は、A[p]の値を取り出してからpの値を1だけ減らした上で取り出した値を返す関数です。
データを入れる操作と取り出す操作の両方を、配列の末尾側で行っています。このことから、これらの関数が操作するデータ構造はスタック(stack)であることが分かります。
スタックは、データをLIFO(Last-In First-Out)で蓄えます。ちょうど、机の上に重ねた皿のように、最も上に重ねた皿を優先的に取り出すのと同様です。
データを入れる操作をプッシュ(push)、データを取り出す操作をポップ(pop)といいます。
関数fが行う操作がプッシュで、関数gが行う操作がポップです。