基本情報技術者平成19年秋期 午前問13

問13

十分な大きさの配列Aと初期値が0の変数pに対して,関数ƒ(x)とg()が次のとおり定義されている。配列Aと変数pは,関数ƒ(x)とg()だけでアクセス可能である。これらの関数が操作するデータ構造はどれか。

function ƒ(x) {
 p=p+1;
 A[p]=x;
 return None;
}
function g() {
 x=A[p];
 p=p-1;
 return x;
}
  • キュー
  • スタック
  • ハッシュ
  • ヒープ
  • [出題歴]
  • 基本情報技術者 H24春期 問6

分類

テクノロジ系 » アルゴリズムとプログラミング » データ構造

正解

解説

4つの選択肢の用語の意味を簡単に確認しておきます。
キュー
先入れ先出し(FIFO)のデータ構造
スタック
後入れ先出し(LIFO)のデータ構造
ハッシュ
任意のデータから一意に求めた固定長のデータ
ヒープ
親の値は子の値以上という制約で構成された木構造
ƒ(x)は、配列中のpを1加算した位置にxを代入しています。g()は、配列中の位置pの値を返し、pを1減らしています。この2つの関数で使われている変数pは、現在、配列に格納されている要素数を保持する変数として使われています。

ƒ(x)を実行したときには配列の末尾に要素が追加され、g()を実行したときには配列の末尾の要素が返されます。「配列の最後にデータを追加する」および「最後に追加されたデータを取り出す」という2つの操作を合わせると、後入れ先出しのデータ構造を実現することができます。

したがって、後入れ先出し(LIFO)のデータ構造である「スタック」が正解です。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop