線形データ構造とは何ですか? 説明されたデータ構造のリスト
公開: 2021-06-18データ構造は、ユーザーが効率的に使用できるように構造化されたデータです。 コンピュータプログラムはデータに大きく依存しており、パフォーマンスのために大量のデータを必要とするため、データを整理することが非常に重要です。 組織化された構造でのデータのこの配置は、データ構造として知られています。
データをデータ構造に格納すると、データ要素を介して実行できるアクセス、変更、およびその他の操作が可能になります。 データの配置は主にコンピューターで行われるため、データ構造を操作するには適切なアルゴリズムが必要です。 データ構造の主な目的は、スペースを削減し、さまざまなタスクの時間計算量を削減することです。
データ構造で最も重要なポイントは次のとおりです。
- 大量のデータは、あらゆるタイプのデータ構造を通じて編成されます。
- 特定の原則には、すべてのデータ構造が続きます。
- データ構造に対して操作を実行する場合でも、データ構造の基本原則に従う必要があります。
データ構造内のデータの配置は、さまざまな順序に従うことができます。 したがって、データ構造は、データの配置方法に従って分類されます。 基本的に、データ構造には2つのタイプがあります。
- プリミティブデータ構造
- 非プリミティブデータ構造
プリミティブ型のデータ構造には、char、float、int、doubleなどの事前定義されたデータ構造が含まれます。
非プリミティブデータ構造は、要素のコレクションを格納するために使用されます。 このデータ構造はさらに分類できます
- 線形データ構造
- 非線形データ構造。
読む:線形データ構造と非線形データ構造の違いを学ぶ
この記事では、主にデータを線形に格納するデータ構造について説明します。
目次
線形データ構造
これは、データの配置が線形トレンドに従うタイプのデータ構造です。 データ要素は、要素が前の要素と次の要素に直接リンクされるように線形に配置されます。 要素は線形に格納されるため、構造はデータの単一レベルの格納をサポートします。 したがって、データのトラバースは1回の実行でのみ実行されます。
特徴
- これは、データが線形シーケンスで格納および管理されるタイプのデータ構造です。
- シーケンス内のデータ要素は次々にリンクされます。
- データが順番に編成されるため、コンピュータのメモリ内のデータの線形構造の実装は簡単です。
- 配列、キュー。 スタック、リンクリストなどは、このタイプの構造の例です。
- データ構造に格納されているデータ要素には、1つの関係しかありません。
- データ要素は単一レベルに格納されるため、データ要素のトラバースは1回の実行で実行できます。
- データを線形に格納する構造が実装されている場合、コンピュータメモリの使用率は低くなります。
- データ構造のサイズが大きくなると、構造の時間計算量が増加します。
したがって、これらの構造は、要素が順番に格納され、次の順序に従うデータ構造のタイプとして要約できます。
- 次の要素が1つある最初の要素が1つだけ存在します。
- 前の要素が1つある最後の要素が1つだけ存在します。
- データ構造内の他のすべての要素には、前の要素と次の要素があります
線形タイプのデータ構造のデータ構造のリスト
1.アレイ
配列は、隣接するメモリ位置に同種の要素を格納するタイプの構造です。 同じタイプのオブジェクトが順番に配列に格納されます。 配列の主な考え方は、同じタイプの複数のデータを一緒に格納できるということです。 データを配列に格納する前に、配列のサイズを定義する必要があります。 配列内の任意の要素にアクセスまたは変更でき、格納されている要素にインデックスが付けられて、それらの場所が識別されます。
配列は、クラスのすべての生徒のマークを格納する簡単な例を使用して説明できます。 20人の生徒がいるとすると、配列のサイズを20と指定する必要があります。すべての生徒のマークは、生徒ごとにマークの個別の変数を作成しなくても、作成した配列に格納できます。 配列を単純にトラバースすると、要素にアクセスできるようになります。
2.リンクリスト
リンクリストは、個別のオブジェクトが順番に格納されるタイプのデータ構造です。 データ構造に格納されているすべてのオブジェクトには、データと次のオブジェクトへの参照があります。 リンクリストの最後のノードにはnullへの参照があります。 リンクリストの最初の要素は、リストの先頭と呼ばれます。 他のタイプのデータ構造へのリンクリストには多くの違いがあります。 これらは、メモリ割り当て、データ構造の内部構造、およびリンクリストで実行される操作の観点からです。
リンクリスト内の要素へのアクセスは、配列内のインデックス付けが要素の検索に役立つため、配列に比べてプロセスが遅くなります。 ただし、リンクリストの場合、プロセスは先頭から開始し、目的の要素に到達するまで構造全体をトラバースする必要があります。 これとは対照的に、リンクリストを使用する利点は、最初の要素の追加または削除を非常に迅速に実行できることです。
リンクリストには次の3つのタイプがあります。
- 単一リンクリスト:このタイプの構造には、現在のノードに格納されている次のノードのアドレスまたは参照があります。 したがって、最後にアドレスと参照をNULLとして持つノード。 例:A-> B-> C-> D->E->NULL。
- 二重リンクリスト:名前が示すように、各ノードには2つの参照が関連付けられています。 1つの参照は前のノードを指し、2番目の参照は次のノードを指します。 前のノードの参照が利用可能であるため、トラバーサルは両方向で可能です。 また、削除には明示的なアクセスは必要ありません。 例:NULL <-A <-> B <-> C <-> D <->E->NULL。
- 循環リンクリスト:循環リンクリストのノードは、円を形成するように接続されています。 リンクリストは循環型であるため、終わりはなく、したがってNULLはありません。 このタイプのリンクリストは、単一または二重の両方の構造に従うことができます。 特定の開始ノードはなく、データの任意のノードを開始ノードにすることができます。 最後のノードの参照は、最初のノードを指します。 例:A-> B-> C->D->E。
リンクリストのプロパティは次のとおりです。
- アクセス時間:O(n)
- 検索時間:O(n)
- 要素の追加:O(1)
- 要素の削除:O(1)
3.スタック
スタックは、データ構造に格納されている要素がLIFO(後入れ先出し)またはFILO(後入れ先出し)の規則に従う別のタイプの構造です。 スタックには、プッシュとポップの2種類の操作が関連付けられています。 プッシュは要素をコレクションに追加する必要がある場合に使用され、ポップは最後の要素をコレクションから削除する必要がある場合に使用されます。 抽出は、最後に追加された要素に対してのみ実行できます。
スタックのプロパティは次のとおりです。
- 要素の追加:O(1)
- 要素の削除:O(1)
- アクセス時間:O(n)[最悪の場合]
- 片方の端だけが要素の挿入と削除を許可します。
スタックの例には、再帰の削除が含まれます。 単語を元に戻す必要があるシナリオ、または最後に入力された単語が最初に削除されるときにエディターを使用している場合(元に戻す操作を使用)、スタックが使用されます。 興味深いデータ構造プロジェクトを試したい場合は、クリックしてこの記事を読んでください。
4.キュー
キューは、格納される要素が先入れ先出し(FIFO)の規則に従うデータ構造のタイプです。 要素に対して必要な操作を実行するために、特定の順序に従います。 キューとスタックのキューの違いは、要素の削除にあります。ここでは、最後に追加されたオブジェクトがスタックの最初に削除されます。 一方、キューの場合、最初に追加された要素が最初に削除されます。
データ構造の両端は、データの挿入と削除に使用されます。 キューの構造を管理する2つの主な操作は、エンキューとデキューです。 エンキューとは、データの収集に対して要素の挿入が許可されるプロセスを指し、デキューとは、要素の削除が許可されるプロセスを指します。この場合、キューの最初の要素です。
キューのプロパティは次のとおりです。
- 要素の挿入:O(1)
- 要素の削除:O(1)
- アクセス時間:O(n)
キューの例:バスまたはどこかで待機中に作成されたキューと同様に、データ構造も同じパターンに従います。 バスを待って最初の位置に立っている人が、最初に列に並んだ人として想像できます。 この人がバスに乗る、つまり列を出る最初の人になります。 キューは、複数のユーザーが同じリソースを共有している場合に適用され、サーバーで最初に来たユーザーに基づいてキューを提供する必要があります。
結論
データのサイズが大きくなると、コンピュータプログラムでデータ構造を効率的に使用する必要があります。 データが構造化された方法で編成されていない場合、要素に対するタスクの実行が困難になります。
手間のかからない操作のために、コンピュータプログラムによって簡単で効果的な操作が実行されることができるようにそれを組織化することは常に重要です。 データ要素が順番に編成されている場合は線形データ構造と呼ばれ、データ要素が非線形に配置されている場合は非線形構造と呼ばれます。
機械学習言語や現実の問題などでデータ構造の幅広い適用が観察されています。この分野で働くことを夢見ている人々は、これらの概念を習得できるはずです。
詳細を知りたい場合は、データサイエンスのupGrad Executive PGプログラムをチェックしてください。これは、成功するデータサイエンティストに変身するためのプラットフォームを提供します。 中堅レベルの専門家向けに設計されたデータサイエンスコースでは、成功に必要なすべての理論的および実践的な知識を身に付けることができます。 だから、成功がクリックするだけであるのに、なぜ他のオプションを待つのですか? ご不明な点がございましたら、お気軽にお問い合わせください。
以下は、線形データ構造と非線形データ構造の重要な違いを示しています。 次のポイントは、リンクリストが配列よりもはるかに効率的である方法を詳しく説明しています。 すべての線形データ構造で実行できる一般的な操作には、トラバース、挿入、削除、変更、検索操作、および並べ替え操作が含まれます。線形データ構造と非線形データ構造の違いは何ですか?
線形データ構造-
1.線形データ構造では、各要素は、次の要素と前の要素を参照して互いに線形に接続されます。
2.単一のレベルのみが関与するため、実装は非常に簡単です。
3.線形データ構造では、メモリの浪費がはるかに一般的です。
4.スタック、キュー、配列、およびリンクリストはすべて線形データ構造の例です。
非線形データ構造-
1.非線形データ構造では、要素は階層的に接続されます。
2.複数のレベルが関係するため、実装ははるかに複雑です。
3.メモリは賢く消費され、メモリの浪費はほとんどありません。
4.グラフとツリーは、非線形データ構造の例です。 リンクリストはどのように配列よりも効率的ですか?
a。 動的メモリ割り当て
リンクリストのメモリは動的に配置されます。つまり、サイズを初期化する必要はなく、外部操作を意味することなく、いつでも拡張および縮小できます。
一方、配列は静的に割り当てられ、サイズを初期化する必要があります。 一度作成すると、サイズを変更することはできません。
b。 挿入と削除
リンクリストは動的に作成されるため、挿入や削除などの操作がはるかに便利です。
c 。 メモリの浪費はありません
すべての要素が動的に挿入されるため、リンクリストにメモリの浪費はありません。 そして、要素の削除後、そのメモリを解放することができます。 線形データ構造で実行される最も一般的な操作は何ですか?
これらの操作は、さまざまなデータ構造でさまざまな名前で認識されます。 たとえば、挿入および削除操作は、スタックではプッシュおよびポップ操作と呼ばれますが、キューではエンキューおよびデキュー操作と呼ばれます。
データ構造が空かどうかを確認するためのマージや空の操作など、他の操作もあります。