はじめに
幽灯子/基本情報技術者副専門官データ構造とは、コンピュータがデータを効率よく保存・管理するための「整理術」のことです。基本情報技術者試験(FE試験)では頻出テーマですが、身近なものに例えると驚くほどシンプルに理解できます。
この記事では、試験に出る主要なデータ構造を、プログラミング経験がなくても分かるように解説します。
1. 配列(はいれつ) ― ロッカーのイメージ





配列は、番号付きのロッカーが一列に並んでいる状態をイメージしてください。
ロッカーの「0番」「1番」「2番」…にそれぞれデータを入れておき、番号を指定すれば一瞬で中身を取り出せます。たとえば「3番のロッカーを開けて」と言えば、端から順に探さなくても直接アクセスできるわけです。
メリット: 番号(添え字)を指定すれば、どのデータにも高速にアクセスできる。
デメリット: ロッカーの列は最初に長さを決める必要があり、途中でロッカーを増やしたり、途中に1つ割り込ませたりするのが大変。
試験で問われるポイント: 添え字(インデックス)は通常 0 から始まること、要素の挿入・削除には他の要素をずらす手間がかかること。
2. リスト(連結リスト) ― 宝探しゲームのイメージ



連結リストは、宝探しゲームの手がかりメモに似ています。各メモには「データ」と「次のメモの場所」が書いてあり、それをたどっていくことで全部のデータにアクセスできます。
配列のようにデータが物理的に隣り合っている必要はなく、各データが「次はあそこだよ」という情報(ポインタ)を持っているだけです。
メリット: データの挿入や削除がとても簡単。メモの「次の場所」を書き換えるだけで済む。
デメリット: 「5番目のデータを見たい」と思っても、1番目から順にたどるしかないので、特定の位置へのアクセスが遅い。
試験で問われるポイント: 単方向リスト(次だけ指す)と双方向リスト(前と次の両方を指す)の違い、ポインタの付け替え操作。
3. スタック ― 本の山積みのイメージ



スタックは、机の上に積み上げた本のようなものです。
本を置くときは一番上に乗せ、取るときも一番上から取ります。途中の本を直接抜き出すことはしません。つまり「最後に入れたものが最初に出てくる」仕組みで、これを LIFO(Last In, First Out:後入れ先出し) と呼びます。
身近な例としては、Webブラウザの「戻る」ボタンがあります。最後に開いたページから順に戻っていきますよね。あれがまさにスタックの仕組みです。
基本操作:
- プッシュ(push):データを上に積む
- ポップ(pop):一番上のデータを取り出す
試験で問われるポイント: LIFO の概念、プッシュ・ポップ操作のトレース問題(具体的な手順を追う問題)。
4. キュー(待ち行列) ― レジの行列のイメージ



キューは、スーパーのレジに並ぶ行列そのものです。
先に並んだ人から順番に会計をします。つまり「最初に入れたものが最初に出てくる」仕組みで、これを FIFO(First In, First Out:先入れ先出し) と呼びます。
プリンターの印刷待ちも身近な例です。先に送った文書から順番に印刷されますよね。
基本操作:
- エンキュー(enqueue):行列の最後尾にデータを追加する
- デキュー(dequeue):行列の先頭からデータを取り出す
試験で問われるポイント: FIFO の概念、スタックとの違い。
5. 木構造(ツリー) ― 家系図のイメージ





木構造は、家系図や会社の組織図のような形をしたデータ構造です。
一番上に「根(ルート)」と呼ばれるデータがあり、そこから枝分かれして下に広がっていきます。それぞれのデータを「ノード(節)」、分岐のつながりを「エッジ(枝)」と呼びます。
パソコンのフォルダ構造も木構造の一例です。「Cドライブ」の下に「ドキュメント」フォルダがあり、さらにその下にファイルがある、という階層構造そのものです。
覚えておきたい用語:
- ルート(根):一番上のノード
- リーフ(葉):一番下のノード(子を持たない)
- 親ノード・子ノード:上下のつながりの関係
二分木と二分探索木
試験で特に重要なのが二分木です。二分木では、各ノードが持てる子の数が最大2つ(左の子と右の子)に制限されています。
さらに、二分探索木は「左の子は親より小さい値、右の子は親より大きい値」というルールを持つ二分木です。このルールがあるおかげで、データを効率よく検索できます。
試験で問われるポイント: 木の走査方法(前序・中序・後序)、二分探索木での探索手順、ノードの追加・削除。
6. グラフ ― 路線図のイメージ



グラフは、鉄道の路線図をイメージするのが一番分かりやすいでしょう。
駅(ノード)と、駅同士をつなぐ線路(エッジ)で構成されています。木構造との違いは、自由にノード同士をつなげられる点です。「A駅からB駅にもC駅にも行けて、B駅からもC駅に直接行ける」というような複雑な関係を表現できます。
SNS の友達関係もグラフの一例です。AさんとBさんが友達で、BさんとCさんも友達で、AさんとCさんも友達、という「つながり」を表すのにぴったりの構造です。
試験で問われるポイント: 有向グラフ(一方通行あり)と無向グラフ(双方向)、隣接行列による表現。
7. ハッシュ表 ― 辞書の索引のイメージ



ハッシュ表は、辞書で単語を引くときの仕組みに似ています。
「apple」を調べたいとき、辞書を1ページ目から順に探す人はいません。「aの項目」を開けば、すぐにたどり着けます。ハッシュ表も同じ考え方で、「ハッシュ関数」という計算式でデータの格納場所を瞬時に割り出します。
メリット: 検索・追加・削除が非常に高速(平均的に一定時間で完了)。
デメリット: 異なるデータが同じ場所に割り振られる「衝突(コリジョン)」が起こることがある。
衝突の解決方法(試験頻出):
- オープンアドレス法:衝突したら別の空き場所を探す
- チェイン法(連鎖法):同じ場所にリストでつなげて格納する
まとめ ― 各データ構造の比較


| データ構造 | 日常のたとえ | 特徴 | 試験での重要度 |
|---|---|---|---|
| 配列 | ロッカー | 番号で高速アクセス、サイズ固定 | ★★★ |
| リスト | 宝探しメモ | 挿入・削除が得意、順次アクセス | ★★★ |
| スタック | 本の山積み | LIFO(後入れ先出し) | ★★★ |
| キュー | レジの行列 | FIFO(先入れ先出し) | ★★★ |
| 木構造 | 家系図 | 階層関係を表現、探索に強い | ★★★ |
| グラフ | 路線図 | 複雑なつながりを表現 | ★★☆ |
| ハッシュ表 | 辞書の索引 | 超高速な検索、衝突に注意 | ★★★ |
試験対策のコツ
基本情報技術者試験のデータ構造の問題では、「このデータ構造の特徴は何か」「この操作を行ったら結果はどうなるか」というパターンが繰り返し出題されます。対策として大切なのは次の3点です。
まず、各データ構造の得意・不得意を対比して覚えること。たとえば「配列はアクセスが速いが挿入が遅い、リストは挿入が速いがアクセスが遅い」というように、セットで理解すると記憶に残りやすくなります。
次に、スタックとキューの操作トレース問題を繰り返し練習すること。紙に図を描きながら、push/pop や enqueue/dequeue の順序を追う練習をしておくと、本番でも落ち着いて解けます。
最後に、木構造の走査順序(前順・中順・後順)を手で追えるようにしておくこと。これは実際に簡単な木を描いて練習するのが一番の近道です。



データ構造は一見難しそうに見えますが、身近なものに置き換えて考えればイメージがつかめます。日常生活の中で「これってスタックだな」「これはキューだな」と意識してみると、自然と理解が深まるはずです。













コメント