
基本情報技術者試験 令和7年度 公開問題 科目B、全6問のうちの問3。
出典:令和7年度 基本情報技術者試験 公開問題 科目B 問3(図とプログラムは原本の画像を文字に書き起こし、字下げは 1 段を空白 2 つで表した。図は要素番号と中身の表にし、網掛け (未定義) は「未定義」と書いた。stackPos の矢印は図の題に書いた。空欄は[ a ][ b ]で、解答群の表は 1 行の文に組み直した)
次の
関数 push は,
関数 pop は,
スタックを,要素数が
プログラムでは,
| 要素番号 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| stack | 4 | 3 | 未定義 | 未定義 |
大域: 整数型: stackPos ← 3大域: 整数型の配列: stack ← {4, 3, 未定義の値, 未定義の値}○論理型: push(整数型: inputData)if (stackPos ≦ stackの要素数)stack[[ a ]] ← inputDatastackPos ← stackPos + 1return trueelsereturn falseendif○整数型: pop()整数型: popData ← 未定義の値if (stackPos > 1)stackPos ← [ b ]popData ← stack[stackPos]stack[stackPos] ← 未定義の値endifreturn popData
- アa stackPos,
b stackPos + 1 - イa stackPos,
b stackPos - 1 - ウa stackPos - 1,
b stackPos + 1 - エa stackPos - 1,
b stackPos - 1
答えと解説を開く
正解はイです。
初期状態は
ほかの選択肢が違う理由
- アpush は
合っていますが、 pop で stackPos を 1 増やします。 初期状態から pop() を 呼ぶと stackPos ← 4 で 未定義の stack[4] を 読み、 stackPos が 4 の ときに 呼ぶと stack[5] と 配列の 外を 指します。 - ウpush で
stackPos - 1 の 位置に 入れます。 初期状態から push(5) を 呼ぶと stack[2] の 3 を 上書きします。 pop も stackPos を 増やすので、 stackPos が 4 の ときに 呼ぶと stack[5] と 配列の 外を 指します。 - エpop は
合っていますが、 push で stackPos - 1 の 位置に 入れます。 初期状態から push(5) を 呼ぶと、 入っていた 3 を 上書きして stack = {4, 5, 未定義, 未定義} に なり、 値が 1 つ 消えます。
仕組み
スタックは、
位置の