【でーたこうぞう】

データ構造 とは?

💡 データの「整理棚」の設計図
📌 このページのポイント
主なデータ構造の比較 配列 0 1 2 3 4 インデックスで直接アクセス 連結リスト A B C D ノードがポインタで接続 スタック(LIFO) C B A push pop 後入れ先出し キュー(FIFO) A B C D 先入れ先出し 木構造 L R ハッシュテーブル key1 key2 key3 key4 val A val B val C val D
主なデータ構造の比較
ひよこ ひよこ

データ構造ってどういうこと?

ペンギン先生 ペンギン先生

データを「どこに・どんな形で入れておくか」の設計のことだよ。本棚に例えると、五十音順に並べるか・ジャンル別に並べるか・背の高さ順に並べるかで、目的の本を見つける速さが変わるよね。データ構造もそれと同じで、目的に合った整理の形を選ぶことが大切なんだ。

ひよこ ひよこ

どれを使えばいいかってどう判断するの?

ペンギン先生 ペンギン先生

「どんな操作を頻繁にするか」で判断するよ。順番に全部見たいなら配列、先入れ先出しで処理したいならキュー、後入れ先出しならスタック、高速に検索したいならハッシュテーブルというように、使い方に合ったものを選ぶんだ。

ひよこ ひよこ

プログラミングでデータ構造を自分で作らないといけないの?

ペンギン先生 ペンギン先生

多くの場合は言語の標準ライブラリに用意されているから、自分で一から作ることは少ないよ。でも「この構造の特徴」を理解していないと正しく選べない。どのデータ構造がどんな操作に向いているかを知っておくことが大事なんだ。

ひよこ ひよこ

実際の開発で一番よく使うデータ構造って何?

ペンギン先生 ペンギン先生

配列(Array/List)とハッシュマップ(Dictionary/Map)が圧倒的に多いよ。この2つだけで実務の90%はカバーできるんだ。ただし「なぜその構造を選ぶか」を理解しておくことが重要で、たとえば「要素の存在確認を頻繁にする」ならArrayのO(n)検索よりSetのO(1)検索の方が圧倒的に速い。実はLeetCodeのような競プロサイトでよく出る「Two Sum問題」は、ハッシュマップを使えばO(n)で解けるのにArrayだけだとO(n²)になる典型例で、データ構造の選択が性能を決定する好例だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「データ構造」って出てきたら「データをどう整理して入れておくかの形式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Data Structure」 = データの構造・形式
💬 1960年代から情報科学の基礎概念として研究されてきた。「アルゴリズム+データ構造=プログラム」という有名な言葉があるほど重要な概念だよ
← 用語集にもどる