線形データ構造と非線形データ構造の主な違いは、線形データ構造がデータを順次に並べるのに対し、非線形データ構造はデータを階層的に並べ、データ要素間に関係を作ることである。
データ構造とは、データを保存・管理するための方法です。
データ構造には、線形データ構造と非線形データ構造の2種類があります。
線形データ構造では、項目を順次トラバースすることができる。
一方、非線形データ構造では、各要素は1つまたは複数の要素に接続され、項目間の関係が作成される。
線形データ構造とは
線形データ構造とは、データ要素が連続した順序で並んでいるデータ構造のことです。
線形データ構造では、隣接する要素は互いにくっついている。
しかし、このようなデータ構造では、メモリを有効に活用することができません。
したがって、メモリの浪費につながる可能性があります。
配列、リンクリスト、スタック、キューは、線形データ構造の一般的な例です。
配列は、同じデータ型のデータ要素を格納します。
リンクリストは、一連のノードを含むデータ構造で、各ノードにはデータと他のノードのアドレスが格納されます。
各ノードには別のノードのデータとアドレスが格納される。
これらのノードは互いに接続され、鎖のような構造を形成する。
スタックは、現実のスタックと同じように動作する抽象的なデータ型です。
LIFO (Last in First Out) 順序に従う。
つまり、最後に挿入された要素がスタックの最上位にある。
したがって、最初にアクセスする要素は、最後に挿入された要素です。
また、スタックに要素を挿入することをプッシュ操作といい、スタックから要素を取り出すことをポップ操作という。
キューも抽象的なデータ構造であるが、要素を挿入する端と削除する端の2つがあります。
要素を挿入することをenqueue、要素を削除することをdequeueと呼ぶ。
非線型データ構造とは?
非直線的データ構造とは、データを非連続的に格納するデータ構造のことです。
子要素と親要素の間に階層的な関係が形成される。
つまり、データ項目は互いにくっついていて、その間に関係があります。
要素を挿入したり、削除したり、順次に通過することはできない。
通常、これらのデータ構造は、よりメモリ効率が高い。
木とグラフは最も一般的な非線形データ構造です。
木データ構造は、エッジで接続されたノードを表す。
二分木は、木データ構造の一つです。
二分木の各ノードは最大2つの子を持つことができる。
図2: 非線形データ構造 – バイナリツリー
例えば、上の2分木では、2が親ノードで、7と5が子ノードです。
さらに、グラフもノードとエッジからなるデータ構造です。
LinearとNon Linearデータ構造の違い
定義
線形データ構造とは、データ項目を整然と並べ、要素を隣接させるタイプのデータ構造であり、非線形データ構造とは、データをソートして並べ、データ要素間に関係を持たせるタイプのデータ構造です。
これが線形データ構造と非線形データ構造の主な違いです。
メモリ使用量
線形データ構造ではメモリ使用率が悪く、非線形データ構造ではメモリ使用率が良い。
この点も線形データ構造と非線形データ構造の違いと言えます。
レベル
さらに、線形データ構造は単一レベルであり、非線形データ構造は多レベルです。
実装
線形データ構造と非線形データ構造のもう一つの違いは、実装です。
線形データ構造の実装は容易であるが、非線形データ構造の実装は困難です。
例
配列、リンクリスト、キュー、スタックは線形データ構造の例であり、木やグラフは非線 形データ構造の例です。
これも線形と非線形のデータ構造の違いです。
結論
データ構造は、データを効率的に利用するために、データを整理するのに役立つ。
データ構造には、主に線形データ構造と非線形データ構造の2種類があります。
線形データ構造と非線形データ構造の主な違いは、線形データ構造がデータを順次に配置するのに対し、非線形データ構造はデータを階層的に配置し、データ要素間の関係を作成することである。