· theory  · 8 min read

スタック・キュー・木とは?基本情報技術者試験のデータ構造を図解で攻略

スタック・キュー・連結リスト・二分木——基本情報技術者試験の科目A・Bに必ず出るデータ構造4種を、動作原理と試験での出題パターンごとに解説する。

スタック・キュー・連結リスト・二分木——基本情報技術者試験の科目A・Bに必ず出るデータ構造4種を、動作原理と試験での出題パターンごとに解説する。

プログラムは「データをどこに・どう並べるか」で処理速度が大きく変わる。 その「データの並べ方のルール」がデータ構造だ。

基本情報技術者試験では、データ構造は科目A(知識問題)と科目B(擬似言語問題)の両方に登場する頻出分野だ。仕組みを理解しないまま「用語だけ覚える」アプローチでは、科目Bのトレース問題で手が止まる。

この記事では試験に出る4つのデータ構造を、動作原理 → 実用例 → 試験での出題パターンの順で解説する。


スタック — 後から入れたものを先に取り出す

スタックの原則はLIFO(Last In, First Out:後入れ先出し)だ。 本を積み上げた山を想像すると分かりやすい。一番上(最後に置いた本)から取り出すしかない。

操作の名前

  • プッシュ(push):データを先頭に追加する
  • ポップ(pop):先頭からデータを取り出す

実際に使われている場面

  • テキストエディタの「元に戻す(Ctrl+Z)」機能
  • Webブラウザの「戻る」ボタン
  • 関数の呼び出し履歴(コールスタック)

試験での出題パターン

科目Bでは「スタックへのプッシュ・ポップ操作をトレースして、最終的にスタックの先頭にある値を答えよ」という形式が多い。 途中でプッシュとポップが混在するため、手動で状態を書き出しながら追う練習が必要だ。


キュー — 最初に入れたものを先に取り出す

キューの原則はFIFO(First In, First Out:先入れ先出し)だ。 コンビニのレジ待ち行列がそのまま例として使える。最初に並んだ人が最初に処理される。

操作の名前

  • エンキュー(enqueue):データを末尾に追加する
  • デキュー(dequeue):先頭からデータを取り出す

実際に使われている場面

  • 印刷ジョブの待ち行列
  • ネットワークパケットの送信待ち
  • OSのタスクスケジューリング

スタックとの違いを図で整理

スタック(LIFO):  追加→[3][2][1]  取り出し順: 3→2→1
キュー(FIFO):    追加→[1][2][3]  取り出し順: 1→2→3

試験では「スタックとキューの動作の違いを答えよ」という選択問題も出る。 LIFO / FIFO のキーワードを確実に紐づけておくこと。


連結リスト — ポインタで繋がったデータの列

連結リストは、各データが「次のデータへのポインタ(アドレス)」を持つ構造だ。 配列と違い、メモリ上に連続して並んでいる必要がない。

特徴

操作配列連結リスト
末尾への追加遅い(全コピー)速い
先頭への挿入遅い(全シフト)速い
ランダムアクセス速い(添字で直アクセス)遅い(先頭から辿る)

双方向リスト

前後両方向へのポインタを持つ形式。前のノードへも辿れるため柔軟性が高いが、メモリ使用量が増える。

試験では「挿入・削除時のポインタの付け替え手順」をトレースする問題が出やすい。 処理ミスなくポインタを繋ぎ変える手順を、紙に書いて練習しておくこと。


木(ツリー)構造 — 階層を持つデータ表現

木構造は、親ノードから子ノードへと枝分かれする階層型データ構造だ。 ファイルシステムのフォルダ階層や、組織図がイメージしやすい。

基本用語

  • 根(ルートノード):最上位のノード。親を持たない
  • 葉(リーフノード):子を持たない末端ノード
  • 深さ(高さ):根からの階層数

二分木と二分探索木

二分木は、各ノードの子が最大2つに限定された木だ。 二分探索木(BST)はさらに「左の子 < 親 < 右の子」という順序制約を加えた特殊な二分木で、データの検索が高速になる。

探索のロジック:

  1. 探したい値を根ノードの値と比較する
  2. 小さければ左の子へ、大きければ右の子へ移動する
  3. 一致するまで繰り返す

最悪でも木の深さ分の比較回数で探せるため、バランスの取れた二分探索木では O(log n) の計算量になる。

木の巡回(走査)

試験では「前順・中順・後順のいずれかで木を走査した結果を答えよ」という問題が頻出だ。

  • 前順(前置記法):自分 → 左の子 → 右の子
  • 中順(中置記法):左の子 → 自分 → 右の子
  • 後順(後置記法):左の子 → 右の子 → 自分

中順で走査すると二分探索木の要素が昇順に並ぶ。この性質は覚えておいて損はない。


AIで覚える実践テクニック

データ構造は「文字で読む」より「動作をトレースする」方が理解が速い。以下のプロンプトをChatGPTやGeminiに投げれば、動きを対話形式で確認できる。

スタックに [5, 3, 8, 1] の順でプッシュした後、
ポップを2回行った状態を教えてください。
さらに 9 をプッシュして、残っているデータを答えてください。
以下の二分探索木に対して、前順・中順・後順で走査した結果をそれぞれ答えてください。
      4
    /   \
   2     6
  / \   / \
 1   3 5   7

自分で問題を作ってAIに答えさせ、次に答えを隠して自分で解く——この往復が最も速い習得法だ。


まとめ

データ構造原則代表的な用途試験ポイント
スタックLIFOUndo機能プッシュ/ポップのトレース
キューFIFO印刷待ち行列エンキュー/デキューの順序
連結リストポインタで連結動的なデータ管理ポインタの付け替え手順
二分探索木左 < 親 < 右高速検索前順/中順/後順の走査

4つのデータ構造はそれぞれ「いつ使うと速いか」で選ばれている。用語だけでなく動作原理を理解してしまえば、科目Bのトレース問題を解く際に迷わなくなる。

Back to Blog

Related Posts

View All Posts »