スタックへのデータの格納と取り出し【基本情報技術者試験 科目B 公開問題】

令和7年度 基本情報技術者試験 サンプル問題 科目B 問3のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bの公開問題を題材に,スタックへのデータの格納と取り出しについて学習します。この問題では,pushとpopによるスタックの操作と,stackPosの値の変化を確認します。

広告

令和7年度 基本情報技術者試験 公開問題 科目B 問3

 次のプログラム中の   a    b   に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 関数 push は,引数で与えられた整数をスタックに格納する。格納できた場合は true を返し,格納できなかった場合は false を返す。

 関数 pop は,スタックから値を取り出して返す。スタックが空のときは未定義の値を返す。

 スタックを,要素数が4である大域の整数型の配列 stack,及び次に値を格納する位置を示す大域の変数 stackPos で表現する。スタックの初期状態を図に示す。

 プログラムでは,配列の領域外を参照してはならないものとする。

「令和7年度 基本情報技術者試験 公開問題 科目B 問3」の問題_画像

〔プログラム〕

大域: 整数型: 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

stackPosstackPos + 1
stackPosstackPos - 1
stackPos - 1stackPos + 1
stackPos - 1stackPos - 1

【解答】

【解説】

スタックは,最後に格納したデータから順に取り出すデータ構造である。

初期状態では,stackPos は3で,stack[1] に4,stack[2] に3が格納されている。stackPos は「次にデータを格納する位置」を示しているため,pushでは stack[stackPos] にデータを格納した後,stackPos を1増やす。一方,pop では,最後に格納したデータを取り出すため,まず stackPos を1減らし,その位置のデータを取り出す。したがって,a は stackPos,b は stackPos-1 となる。

【参考】

「令和7年度 基本情報技術者試験 公開問題 科目B 問3」の解答_画像

この問題のポイント

 この問題から学べることは,

  • スタックの基本的なしくみ
  • pushによってデータをスタックに格納する方法
  • popによって最後に格納したデータを取り出す方法
  • stackPosによって次にデータを格納する位置を管理する方法
  • pushとpopによるstackPosの値の変化を追跡する方法

です。特に,スタックでは最後に格納したデータから順に取り出すことと,pushではstackPosを1増やし,popではstackPosを1減らしてからデータを取り出すことを理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告