問題プレビューID: d042adf5

問 6

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

function f(x) {
    p = p + 1;
    A[p] = x;
    return None;
}
function g() {
    x = A[p];
    p = p - 1;
    return x;
}
解説

関数 f(x)f(x) は変数 pp を1増やしてから A[p]A[p] に xx を格納し,関数 g()g() は A[p]A[p] から値を取り出してから pp を1減らす。すなわち,最後に格納したデータを最初に取り出す後入れ先出し(LIFO)の動作になっている。これはスタックの性質である。

よって,正解は「イ」です。