基本情報技術者試験の科目Bの公開問題を題材に,スタックへのデータの格納と取り出しについて学習します。この問題では,pushとpopによるスタックの操作と,stackPosの値の変化を確認します。
令和7年度 基本情報技術者試験 公開問題 科目B 問3
問 次のプログラム中の a と b に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
関数 push は,引数で与えられた整数をスタックに格納する。格納できた場合は true を返し,格納できなかった場合は false を返す。
関数 pop は,スタックから値を取り出して返す。スタックが空のときは未定義の値を返す。
スタックを,要素数が4である大域の整数型の配列 stack,及び次に値を格納する位置を示す大域の変数 stackPos で表現する。スタックの初期状態を図に示す。
プログラムでは,配列の領域外を参照してはならないものとする。
〔プログラム〕
大域: 整数型: stackPos ← 3
大域: 整数型の配列: stack ← {4,3,未定義の値,未定義の値}
○論理型: push(整数型: inputData)
if (stackPos ≦ stackの要素数)
stack[ a ] ← inputData
stackPos ← stackPos + 1
return true
else
return false
endif
○整数型: pop()
整数型: popData ← 未定義の値
if (stackPos > 1)
stackPos ← b
popData ← stack[stackPos]
stack[stackPos] ← 未定義の値
endif
return popData
解答群
a | b | |
| ア | stackPos | stackPos + 1 |
| イ | stackPos | stackPos - 1 |
| ウ | stackPos - 1 | stackPos + 1 |
| エ | stackPos - 1 | stackPos - 1 |
【解答】イ
【解説】
スタックは,最後に格納したデータから順に取り出すデータ構造である。
初期状態では,stackPos は3で,stack[1] に4,stack[2] に3が格納されている。stackPos は「次にデータを格納する位置」を示しているため,pushでは stack[stackPos] にデータを格納した後,stackPos を1増やす。一方,pop では,最後に格納したデータを取り出すため,まず stackPos を1減らし,その位置のデータを取り出す。したがって,a は stackPos,b は stackPos-1 となる。
【参考】
| 【参考】 | 「データ構造の基礎まとめ(スタックとは)」 |
この問題のポイント
この問題から学べることは,
- スタックの基本的なしくみ
- pushによってデータをスタックに格納する方法
- popによって最後に格納したデータを取り出す方法
- stackPosによって次にデータを格納する位置を管理する方法
- pushとpopによるstackPosの値の変化を追跡する方法
です。特に,スタックでは最後に格納したデータから順に取り出すことと,pushではstackPosを1増やし,popではstackPosを1減らしてからデータを取り出すことを理解しておきましょう。
基本情報技術者試験の学習におすすめの参考書
基本情報技術者試験の合格を目指す方におすすめの参考書です。
学習のお役に立ちましたら
この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。
よろしければ、このサイトを応援いただけますと嬉しいです。
※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。


