はじめに
絶賛基本情報技術者のアルゴリズムを学習中です!
いきなり問題集を解こうとしたら用語がわからず大苦戦(当たり前)
今回はデータ構造についてまとめました
誤り等ございましたら、教えていただけますと幸いです🙇
データ構造
コンピューター上にデータを格納する論理構造
配列(array,table)
Excelで管理するような表形式のデータ構造で、インデックスによって識別します
インデックス | 名字 | 名前 |
---|---|---|
1 | 山田 | 美代子 |
2 | 田中 | 雅紀 |
スタック
スタックとは複数のデータを順番に格納し、最後に格納したデータから先に1件ずつ取り出す後入れ先だしのデータ構造です
スタックからデータを格納することを プッシュ
取り出すことを ポップ と言います
キュー
スタックとは違い、先入先出し型のデータ構造
データ列の最後に格納する操作を エンキュー
先頭から順に取り出す操作を デキュー と言います
リスト
リストはデータ部とポイント部からなるセルと呼ばれんる単位で管理され、ポインタ部の値により次に連結されるセルが決まるという特徴があります
線形リスト
単(片)方向リストと双(両)方向リストがあります
- 単(片)方向リスト
各要素(セル)は、データと次の要素への参照(ポインタ)を持っており、最後のセルのポインタ部分にはNULL値が格納されています
下記例で言うと、次の曲にはいけるけれど、前の曲にはいけない特徴があります
[Song A | 次の曲への参照] -> [Song B | 次の曲への参照] -> [Song C | null]
- 双(両)方向リスト
単方向と違い前の直前のデータへのポインタが存在します
[Song A | 次の曲への参照] -> [前の曲への参照 | Song B | 次の曲への参照] -> [前の曲への参照 | Song C | null]
環状(循環)リスト
先頭と最後のセルを繋げたリスト
線形リストと同様に単方向と双方向があります
木構造
木構造とは階層構造でデータを管理するもので、木を逆さにしたような形をしています
個々の要素を 節(ノード)
要素同士を結ぶ線を 枝(ブランチ)
親を持たない最上位の要素を 根(ルート)
子を持たない最下位の要素を 葉(リーフ) と言います
-
2分木
節から分岐する枝が2本以下のものを2分木と呼びます
上記のイメージ図も2分木です↑ -
多分木
一つの節が複数の子を持つ構造↓
さいごに
データ構造を理解していないとアルゴリズムの問題が解けないので(当たり前)
まとめました