データ構造とは?リスト・スタック・キューをやさしく解説

データ構造とは?リスト・スタック・キューをやさしく解説

データ構造の使い分けに迷う基本情報受験者のイメージ
「データ構造って、何のために学ぶの?」
「スタックとキューって、何が違うの?」
「配列と連結リストは、どう使い分けるの?」

そんな疑問を抱える、基本情報技術者の科目B 対策を始めたあなたへ。

結論から言えば、
データ構造とは、データを効率よく扱うための「整理方法」のことです。配列・連結リスト・スタック・キュー・木構造・ハッシュテーブルの6つを押さえると、科目B の出題が読み取りやすくなります
と整理されるのが一般的です。

 

「データ構造」とは、同じデータでも整理方法を変えると扱いやすさが変わる仕組みを指す言葉とされています。

 

この記事では、配列・連結リスト・スタック(LIFO)・キュー(FIFO)・二分木・ハッシュテーブルの6つを、初心者のあなた向けにメタファーでやさしくまとめました。基本情報技術者の科目B 対策にも役立ちます。

 

1. 配列と連結リスト — 本棚と数珠つなぎのカード

配列と連結リストの違いをメモするイメージ

あなたが「データ構造」という言葉に最初に出会うのは、配列と連結リストの対比という場面が一般的です。同じ「データを並べて持つ」目的でも、内側の仕組みが異なる構造として整理されることが多いと言われています。

 

ここでイメージしてほしいのが、本棚に並べた本(配列)と、糸で数珠つなぎにしたカード(連結リスト)の違いです。本棚なら「3冊目」と言われた瞬間に手が伸びますが、途中に1冊差し込むには右の本を全部ずらす必要があります。数珠つなぎのカードは順番に辿らないと3枚目に届きませんが、結び目を組み替えれば1枚追加するのは軽い仕組みです。

 

配列は連続したメモリ領域に同じ型を並べる構造です。インデックスで一発参照できる一方、途中に差し込むと後ろをずらすコストが発生します。

 

連結リストは、各要素(ノード)が次への「ポインタ」を持って繋がる構造です。途中の挿入・削除はポインタを繋ぎ替えるだけで済みますが、N 番目を参照したい場合は先頭から順に辿ることになります。

 

配列と連結リストは、「ランダム参照を速くしたいか、途中挿入を速くしたいか」で選び分けるのが基本とされています。科目B では、どちらを使った操作かを読み取る問題が出題されやすいです。

 

2. スタック(LIFO)とキュー(FIFO)

スタックとキューでデータの出入りを管理するイメージ

あなたが次に押さえたいのが、スタックとキューです。どちらも配列や連結リストの上に作られる「出し入れの順番が決まった構造」と整理されることが多いと言われています。

 

スタックは、後から入れたデータを先に取り出す「LIFO(Last In, First Out)」の構造です。机に積み重ねた紙束をイメージすると近いとされています。一番上の紙を最初に取る動きが、スタックの「push」と「pop」に対応します。

 

一方のキューは、先に入れたデータから順に取り出す「FIFO(First In, First Out)」の構造です。皿洗いの待ちトレイが近いとされています。先に置いた皿から洗うのが、キューの「enqueue」と「dequeue」に対応します。

 

  • スタックの典型用途: 関数呼び出し履歴(コールスタック)、ブラウザの「戻る」操作、式の評価
  • キューの典型用途: 印刷ジョブの待ち行列、メッセージキュー、コンビニのレジ待ち

 

別の観点として、スタックとキューは「出入り順を制限することで処理を整理する」役割と言われています。配列や連結リストが「箱」だとすれば、スタック・キューは「出入りのルール」を被せた構造と覚えておくと、科目B の擬似言語問題でも読み取りやすくなります。

 

3. 木構造(二分木)とハッシュテーブル

木構造とハッシュテーブルでデータを引き出すイメージ

あなたが配列・スタック・キューの先で出会うのが、木構造とハッシュテーブルです。どちらも「目的のデータを速く見つける」工夫が組み込まれた構造と言われています。

 

木構造は、データを親子関係で枝分かれさせて持つ構造です。代表が二分木で、各ノードが子を2つまで持つ形を指します。家系図のイメージが近いとされています。二分探索木の形にすると、探す値が左右どちらの枝にあるかを判断しながら、半分ずつ候補を絞れます。

 

ハッシュテーブルは、キーから値を直接引ける構造です。キーを「ハッシュ関数」に通してデータを置く位置(インデックス)を決める仕組みで、名簿の索引で「ア行は3ページ目」と分かっている感覚に近いとされています。

 

構造 平均参照速度 イメージ
二分木(平衡) O(log n) 家系図を枝で半分ずつ絞る
ハッシュテーブル O(1) 名簿の索引で一発引き

 

木構造とハッシュテーブルの違いは、「順序を保って絞るか、順序を捨てて一発引きを優先するか」と整理されています。科目B でも、構造ごとの得意分野を比較する問題が出題されやすいです。

 

4. 使い分けの考え方

データ構造を使い分ける考え方を整理するイメージ

あなたが構造を選ぶときの軸は、「何を速くしたいか」の一点に集約できると言われています。代表的な6構造を、用途別に整理すると次のようになります。

 

構造 得意 苦手
配列 インデックス参照 途中の挿入・削除
連結リスト 途中の挿入・削除 N番目の参照
スタック 直近データの取り出し 中間データの参照
キュー 到着順の処理 中間データの参照
二分木 順序を保った探索 偏ると速度低下
ハッシュテーブル キー指定の一発引き 順序を持たない

 

別の観点として、データ構造はアルゴリズムと一組で効く仕組みです。たとえば二分探索は配列の整列状態が前提、深さ優先探索や幅優先探索は木やグラフの構造が前提です。「どの構造を選ぶか」が、後段の処理速度を左右します。

 

→ 各アルゴリズムの動きを押さえたい場合は、アルゴリズム基礎とは も合わせて読むと、構造とアルゴリズムの組み合わせが立体的に掴めます。

 

5. まとめ: 今日からできる、最初の一歩

今日からの一歩を示すイメージ

ここまで読んだあなたは、データ構造の輪郭をしっかり押さえられたはずです。要点を3つに整理します。

 

  1. 配列(連続領域・参照が速い)と連結リスト(ポインタ連結・挿入が速い)は対の関係
  2. スタックは LIFO(後入れ先出し)、キューは FIFO(先入れ先出し)で出入り順を整える
  3. 二分木は順序を保った絞り込み、ハッシュテーブルはキー指定の一発引き

 

データ構造は、基本情報技術者 科目B アルゴリズムとプログラミングの中核テーマです。擬似言語問題では「どの構造を、どう操作しているか」の読み取りが出題の中心になると言われており、6構造の役割を頭に入れておくと科目B 全体の見通しが立ちやすくなります。

 

あなたが今日からできる、最初の一歩を3つ用意しました。

 

  1. 用語整理: 「配列・連結リスト・スタック・キュー・二分木・ハッシュ」をノートに1行ずつ書く(3分)
  2. 擬似言語: 擬似言語とは で読み方を押さえ、構造と操作のセットで理解する(7分)
  3. 問題演習: 科目B アルゴリズム問題集に進み、構造を読み取る感覚を試す(5分)

 

たった15分で、データ構造はあなたにとって扱える道具に変わります。完璧に覚えてから動くより、まず1問解いてみる。それが、いちばん速い学び方です。

 

次のステップ