【でーたこうぞう】

データ構造 とは?

最終更新:
💡 データの「整理棚」の設計図

データをコンピュータ上でどのように整理・格納するかの形式・仕組みのこと。配列・リスト・スタック・キューなど多くの種類があり、選び方で処理速度が変わる。

📌 このページのポイント
データの整理方法と取り出し方 配列 連結リスト スタック:後入れ先出し キュー:先入れ先出し 木 ハッシュテーブル A 0 B 1 C 2 D 3 番号で要素を取り出す A B C 次のノードへつながる C B A 入 出 同じ端から入れ、出す A B C 出 入 先に入ったAから出す 根 子 子 親と子の階層 キー 値 キーから値を探す 操作の順番と、内部の保存方法を区別する
代表的な構造の例。スタックとキューの入・出は操作方向、連結リストは次のノードへの参照、木の線は親子関係、キーから値への矢印は検索を表す。
ひよこ ひよこ
データ構造ってどういうこと?
ペンギン先生 ペンギン先生
データを「どこに・どんな形で入れておくか」の設計のことだよ。本棚に例えると、五十音順に並べるか・ジャンル別に並べるかで、目的の本の探し方が変わるよね。データ構造も、使い方に合った整理の形を選ぶことが大切なんだ。
ひよこ ひよこ
どれを使えばいいかってどう判断するの?
ペンギン先生 ペンギン先生
よく行う操作を考えるよ。番号で要素を取り出すなら配列、先入れ先出しで処理するならキュー、後入れ先出しならスタック、キーで値を探すならハッシュテーブルなどが候補だね。
ひよこ ひよこ
スタックやキューも、配列みたいな保存の形なの?
ペンギン先生 ペンギン先生
スタックとキューは、主に取り出す順番のルールだよ。配列や連結リストなどで実装できる。同じルールでも、実装によって追加・削除の負担やメモリの使い方が違うんだ。
ひよこ ひよこ
毎回、自分で一から作るの?
ペンギン先生 ペンギン先生
言語の組み込み型や標準ライブラリを利用できることが多いよ。たとえばPythonのlistをスタックとして使えるし、両端からの追加・取り出しに適したdequeでキューを作れる。名前だけでなく、操作と実装の特徴を確認しよう。
ひよこ ひよこ
Setを使えば、いつでも検索が速くなる?
ペンギン先生 ペンギン先生
必ずではないよ。CPythonではlistの存在確認はO(n)、ハッシュを使うsetでは平均的にO(1)だけど、衝突などの条件で悪化することもある。データ量や、集合を作る時間、メモリも含めて選ぶんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「データ構造」って出てきたら「データをどう整理して入れておくかの形式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Data Structure」 = データの構造・形式
💬 データを整理して保持する構造という意味。検索・追加・削除などの操作を行うアルゴリズムと関わっているよ

参考資料

← 用語集にもどる