データ構造とは
データ構造とは、データの並べ方と取り出し方の違いを表す型で、用途に合う構造を選ぶことで処理しやすくなります。

データをどの順番で取り出すかによって、適した構造が変わります。皿の積み重ねと受付の列を比べてみましょう。
基本の仕組み

A、B、Cの順に入れると、スタックはC、B、Aの順、キューはA、B、Cの順で取り出します。前者は後入れ先出し、後者は先入れ先出しです。
配列は添字で直接要素を参照しやすく、連結リストは次の要素への参照をたどります。木は親子関係を持ち、根から枝を選んで要素を探せます。
連結リストの途中への挿入が容易でも、挿入位置を探すコストが消えるわけではありません。操作の前提と全体の処理量を分けて考えます。
単方向リストは、各要素が次の要素への参照を持つ連結リストです。途中へ要素を挿入するには、新要素を従来の次要素へつなぎ、直前要素の参照を新要素へ変更します。先に参照を上書きして後続への道を失わないよう、更新順を追います。
構造を選ぶ条件

配列は添字による直接参照に向きます。連結リストは参照の付替えで挿入できますが、挿入位置を探す走査は必要です。スタックは後入れ先出し、キューは先入れ先出しで要素を取り出します。
木は親子関係を表す構造です。2分探索木は「左の子孫<節<右の子孫」となるよう値を置き、根から大小比較で左右へ進んで探します。ヒープは親が子以上(または以下)となる完全2分木で、最大値(最小値)を根から取り出せます。ハッシュ表はキーから計算した位置へ格納します。
| 構造 | 代表的な操作・性質 |
|---|---|
| スタック | push・pop(後入れ先出し) |
| キュー | enqueue・dequeue(先入れ先出し) |
| 連結リスト | 参照をたどる・付け替える |
| 2分探索木 | 左<節<右の大小で探索 |
| ヒープ | 親が子以上(以下)で根が最大(最小) |
| ハッシュ表 | キーから格納位置を計算 |
試験に出る
- スタック(後入れ先出し)とキュー(先入れ先出し)の取り出し順。
- 配列は添字で直接参照、連結リストは次の要素をたどるという違い。
- 単方向リストの挿入で参照を付け替える順序と、走査の手順。
- 挿入が容易でも挿入位置を探すコストは残ること。
- Undoなど用途からスタックかキューかを選ぶ判断。
重要な言葉
- スタック
- 最後に入れたものを最初に取り出す後入れ先出しの構造。
- キュー
- 最初に入れたものを最初に取り出す先入れ先出しの構造。
- 連結リスト
- 各要素が次の要素への参照を持ち、順にたどる構造。
- 単方向リスト
- 次の要素への参照だけを持つ連結リスト。
確認問題
確かめようUndoで直前の操作から戻すならどちら?
スタック。最後に行った操作を先に取り出します。
スタックは、先に入れた要素を先に取り出す。
単方向リストは、次の要素への参照だけを持つ。
最後に入れた要素を最初に取り出す構造は?
各要素が次の要素への参照だけを持つ構造は?
データをどの順番で取り出すかによって、適した構造が変わります。とを比べてみましょう。
A、B、Cの順に入れると、はC、B、Aの順、はA、B、Cの順で取り出します。前者は後入れ先出し、後者は先入れ先出しです。
は添字で直接要素を参照しやすく、は次の要素への参照をたどります。木は親子関係を持ち、根から枝を選んで要素を探せます。
の途中への挿入が容易でも、挿入位置を探すコストが消えるわけではありません。操作の前提と全体のを分けて考えます。
は、各要素が次の要素へのを持つ連結リストです。途中へ要素を挿入するには、新要素を従来の次要素へつなぎ、直前要素の参照を新要素へ変更します。先に参照を上書きして後続への道を失わないよう、更新順を追います。
出典・参考資料
試験の公式案内と、この記事の参考にした学習資料です。
編集:Pinternet Works · 更新日:
教材の編集方針・訂正について
