基本情報技術者試験 |
2007年度 = 平成19年度・秋期 |
午前 |
問13 |
十分な大きさの配列Aと初期値が0の変数pに対して、関数f(x)とg()が次のとおり定義されている。配列Aと変数pは、関数fと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が行う操作がポップです。