修了試験 2024-12-08実施分 基本情報技術者試験 問5
十分な大きさの配列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; }
正答2
解説
正解は2です。 関数f(x)は、pを1増やしてからA[p]にxを格納します。 関数g()は、A[p]を取り出してからpを1減らします。 pは常に最後に格納した要素の位置を指しているので、最後に入れたデータが最初に取り出されます。 【選択肢別解説】 1:× キューは、最初に格納したデータから順に取り出す先入れ先出し(FIFO:First In First Out)の構造です。 取り出す位置と格納する位置を別々に管理する必要があり、変数p一つでは実現できません。 2:○ スタックは、最後に格納したデータを最初に取り出す後入れ先出し(LIFO:Last In First Out)の構造です。 f(x)がプッシュ、g()がポップに当たり、pがスタックの頂上を指しています。 3:× ハッシュは、キーからハッシュ関数で格納位置を計算してデータを格納する方式です。 f(x)とg()には格納位置を計算する処理がありません。 4:× ヒープは、親の値が子の値以上(または以下)になるように保つ木構造です。 格納や取出しのたびに要素を並べ替える処理が必要ですが、この関数にはありません。 【ポイント】 「位置を一つ進めて格納し、同じ位置から取り出して戻す」のはスタックの典型的な実装です。 キューは先頭と末尾の2つの位置を管理する点で区別できます。まとめて解く
修了試験 2024-12-08実施分を通しで解く(60問)→