基本情報技術者試験 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)であることが分かります。
 スタックは、データをLIFOLast-In First-Out)で蓄えます。ちょうど、机の上に重ねた皿のように、最も上に重ねた皿を優先的に取り出すのと同様です。
 データを入れる操作をプッシュpush)、データを取り出す操作をポップpop)といいます。
 関数fが行う操作がプッシュで、関数gが行う操作がポップです。


BohYoh.comトップページへ