logo

データ構造の概要

コンピューターの発明以来、人々は「」という用語を使用してきました。 データ ' 送信または保存されたコンピュータ情報を指します。ただし、注文タイプにも存在するデータがあります。データとは、紙に書かれた数字やテキスト、電子機器のメモリ内に保存されたビットやバイトの形式、または人の心の中に保存された事実のことです。世界が近代化し始めると、このデータはすべての人の日常生活の重要な側面となり、さまざまな実装により、データを異なる方法で保存できるようになりました。

データ 事実と数値のコレクション、または値のセット、または項目値の単一セットを参照する特定の形式の値です。次に、データ項目はサブ項目に分類されます。サブ項目とは、項目の単純な主形式として知られていない項目のグループです。

従業員名が First、Middle、Last の 3 つのサブ項目に分類できる例を考えてみましょう。ただし、従業員に割り当てられた ID は通常、単一のアイテムとみなされます。

データ構造の概要

図1: データ項目の表現

上述の例では、ID、年齢、性別、姓、中、姓、番地、地域等の項目が基本データ項目である。対照的に、名前とアドレスはグループ データ項目です。

データ構造とは何ですか?

データ構造 コンピュータサイエンスの一分野です。データ構造を研究すると、プロセスやプログラムの効率を高めるためのデータの構成とデータ フローの管理を理解できるようになります。データ構造は、将来必要になったときにこれらのデータを簡単に取得して効率的に利用できるように、コンピュータのメモリにデータを保存および編成するための特別な方法です。データはさまざまな方法で管理できます。たとえば、特定のデータ構成の論理モデルまたは数学モデルはデータ構造と呼ばれます。

特定のデータ モデルの範囲は、次の 2 つの要素によって決まります。

  1. まず、データと実世界のオブジェクトとの明確な相関関係を反映するために、データを構造に十分にロードする必要があります。
  2. 第 2 に、必要なときにいつでもデータを効率的に処理できるように、構成が非常に単純である必要があります。

データ構造の例としては、配列、リンク リスト、スタック、キュー、ツリーなどが挙げられます。データ構造は、コンパイラー設計、オペレーティング システム、グラフィックス、人工知能など、コンピューター サイエンスのほぼすべての側面で広く使用されています。

データ構造は、プログラマーが効果的な方法でデータを管理できるようにするため、多くのコンピューター サイエンス アルゴリズムの主要部分です。ソフトウェアの主な目的はユーザーのデータをできるだけ早く保存および取得することであるため、プログラムまたはソフトウェアのパフォーマンスを向上させる上で重要な役割を果たします。

正規表現Javaとは何ですか

データ構造に関する基本用語

データ構造は、あらゆるソフトウェアまたはプログラムの構成要素です。プログラムに適したデータ構造を選択することは、プログラマーにとって非常に困難な作業です。

以下は、データ構造が関係する場合に必ず使用される基本的な用語です。

    データ:データを基本値または値のコレクションとして定義できます。たとえば、従業員の名前と ID は、従業員に関連するデータです。データ項目:単一の値の単位はデータ項目として知られています。グループ項目:下位のデータ項目を持つデータ項目はグループ項目と呼ばれます。たとえば、従業員の名前には、名、ミドルネーム、姓を含めることができます。基本項目:サブ項目に分割できないデータ項目は、基本項目と呼ばれます。たとえば、従業員の ID です。エンティティと属性:特定のオブジェクトのクラスはエンティティによって表されます。さまざまな属性で構成されます。各属性は、そのエンティティの特定のプロパティを象徴します。例えば、
属性 ID 名前 性別 役職
価値観 1234 ステイシー・M・ヒル 女性 ソフトウェア開発者

類似の属性を持つエンティティは、 エンティティセット 。エンティティ セットの各属性には値の範囲、つまり特定の属性に割り当てることができるすべての値のセットがあります。

「情報」という用語は、意味のあるデータまたは処理されたデータの特定の属性を持つデータに対して使用されることがあります。

    分野:エンティティの属性を象徴する情報の単一の基本単位は、フィールドとして知られています。記録:さまざまなデータ項目のコレクションはレコードとして知られています。たとえば、従業員エンティティについて話す場合、その名前、ID、住所、役職をグループ化して従業員のレコードを形成できます。ファイル:1 つのエンティティ タイプのさまざまなレコードのコレクションは、ファイルと呼ばれます。たとえば、従業員が 100 人の場合、関連ファイルには各従業員に関するデータを含む 25 レコードが存在します。

データ構造の必要性を理解する

アプリケーションはますます複雑になり、データ量は日々増加しているため、データの検索、処理速度、複数のリクエストの処理などで問題が発生する可能性があります。データ構造は、データを効率的に編成、管理、保存するためのさまざまな方法をサポートしています。データ構造の助けを借りて、データ項目を簡単に横断することができます。データ構造は、効率、再利用性、抽象化を実現します。

なぜデータ構造を学ぶ必要があるのでしょうか?

  1. データ構造とアルゴリズムは、コンピューター サイエンスの 2 つの重要な側面です。
  2. データ構造を使用するとデータを整理して保存できますが、アルゴリズムを使用するとそのデータを有意義に処理できます。
  3. データ構造とアルゴリズムを学ぶことは、より優れたプログラマーになるのに役立ちます。
  4. より効果的で信頼性の高いコードを作成できるようになります。
  5. また、問題をより迅速かつ効率的に解決できるようになります。

データ構造の目的を理解する

データ構造は、次の 2 つの相補的な目的を満たします。

    正確さ:データ構造は、対象となるドメインに基づいてあらゆる種類の入力に対して正しく動作するように設計されています。言い換えれば、正確性がデータ構造の主な目的を形成し、それは常にデータ構造が解決しようとする問題に依存します。効率:データ構造も効率的である必要があります。メモリ空間などの多くのコンピュータ リソースを使用せずに、データを迅速に処理する必要があります。リアルタイム状態では、データ構造の効率がプロセスの成功と失敗を決定する重要な要素となります。

データ構造のいくつかの重要な特徴を理解する

データ構造の重要な機能には次のようなものがあります。

順序ツリーの走査
    堅牢性:一般に、すべてのコンピュータ プログラマーは、すべてのハードウェア プラットフォーム上で効率的に実行できるとともに、考えられるすべての入力に対して正しい出力を生成するソフトウェアを作成することを目指しています。このタイプの堅牢なソフトウェアは、有効な入力と無効な入力の両方を管理する必要があります。適応性:Web ブラウザ、ワード プロセッサ、インターネット検索エンジンなどのソフトウェア アプリケーションの構築には、長年にわたり正しく効率的な作業や実行が必要となる巨大なソフトウェア システムが含まれます。さらに、ソフトウェアは、新しいテクノロジーや絶えず変化する市場状況によって進化します。再利用性:再利用性や適応性などの機能は連携して機能します。ソフトウェアを構築するにはプログラマが多くのリソースを必要とし、費用がかかる事業になることが知られています。ただし、ソフトウェアが再利用可能で適応可能な方法で開発されていれば、将来のほとんどのアプリケーションに適用できます。したがって、高品質のデータ構造を実行することにより、再利用可能なソフトウェアを構築することが可能となり、コスト効率と時間を節約できるように見えます。

データ構造の分類

データ構造は、さまざまな方法で相互に関連する構造化された変数のセットを提供します。これは、データ要素間の関係を示し、プログラマーがデータを効率的に処理できるようにするプログラミング ツールの基礎を形成します。

データ構造は次の 2 つのカテゴリに分類できます。

  1. プリミティブデータ構造
  2. 非プリミティブデータ構造

次の図は、データ構造のさまざまな分類を示しています。

データ構造の概要

図2: データ構造の分類

プリミティブデータ構造

    プリミティブデータ構造数字と文字で構成されるデータ構造です。 内蔵 プログラムに。
  1. これらのデータ構造は、マシンレベルの命令によって直接操作または操作できます。
  2. 次のような基本的なデータ型 整数、浮動小数点、文字 、 そして ブール値 プリミティブ データ構造に分類されます。
  3. これらのデータ型は次のように呼ばれます。 単純なデータ型 、それ以上分割できない文字が含まれているため、

非プリミティブデータ構造

    非プリミティブデータ構造プリミティブ データ構造から派生したデータ構造です。
  1. これらのデータ構造は、マシンレベルの命令によって直接操作または操作することはできません。
  2. これらのデータ構造の焦点は、次のいずれかのデータ要素のセットを形成することにあります。 同種の (同じデータ型) または 異質な (異なるデータ型)。
  3. データの構造と配置に基づいて、これらのデータ構造は 2 つのサブカテゴリに分類できます。
    1. 線形データ構造
    2. 非線形データ構造

線形データ構造

データ要素間の線形接続を保持するデータ構造は、線形データ構造として知られています。データの配置は線形に行われ、最初と最後のデータ要素を除く各要素は後続要素と先行要素で構成されます。ただし、メモリの場合は配列が連続していない可能性があるため、必ずしもそうとは限りません。

メモリ割り当てに基づいて、線形データ構造はさらに 2 つのタイプに分類されます。

    静的データ構造:固定サイズのデータ​​構造は、静的データ構造として知られています。これらのデータ構造のメモリはコンパイラ時に割り当てられ、コンパイル後にユーザーがそのサイズを変更することはできません。ただし、そこに保存されているデータは変更される可能性があります。
    配列 これは、サイズが固定されており、データは後で変更できるため、静的データ構造の最良の例です。動的データ構造:動的サイズを持つデータ構造は、動的データ構造として知られています。これらのデータ構造のメモリは実行時に割り当てられ、そのサイズはコードの実行中に変化します。さらに、ユーザーはコードの実行時に、これらのデータ構造に格納されているデータ要素だけでなくサイズも変更できます。
    リンクされたリスト、スタック 、 そして テイルス は動的データ構造の一般的な例です

線形データ構造の種類

以下は、私たちが通常使用する線形データ構造のリストです。

1. 配列

アン 配列 同じデータ型の複数のデータ要素を 1 つの変数に収集するために使用されるデータ構造です。同じデータ型の複数の値を別々の変数名で保存する代わりに、それらすべてを 1 つの変数にまとめて保存できます。このステートメントは、プログラム内の同じデータ型のすべての値をそのデータ型の 1 つの配列に結合する必要があることを意味するものではありません。ただし、同じデータ型の特定の変数がすべて、配列に適した方法で相互に関連している場合がよくあります。

配列は要素のリストであり、各要素はリスト内で一意の位置を持ちます。配列のデータ要素は同じ変数名を共有します。ただし、それぞれには添字と呼ばれる異なるインデックス番号が付けられます。リスト内のデータ要素の位置を利用して、リストの任意のデータ要素にアクセスできます。したがって、理解すべき配列の重要な特徴は、データが連続したメモリ位置に格納され、ユーザーがそれぞれのインデックスを使用して配列のデータ要素を横断できることです。

データ構造の概要

図3. 配列

配列はさまざまなタイプに分類できます。

    一次元配列:データ要素が 1 行のみ含まれる配列は、1 次元配列として知られています。昇順の保管場所に保管されます。二次元配列:データ要素の複数の行と列で構成される配列は、2 次元配列と呼ばれます。マトリックスとも呼ばれます。多次元配列:多次元配列を配列の配列として定義できます。多次元配列は、必要に応じて多くのインデックスを含めることができるため、2 つのインデックスまたは 2 次元に制限されません。

配列のいくつかのアプリケーション:

ターミナルカリLinux
  1. 同じデータ型に属するデータ要素のリストを保存できます。
  2. 配列は、他のデータ構造の補助記憶域として機能します。
  3. この配列は、固定数のバイナリ ツリーのデータ要素を格納するのにも役立ちます。
  4. 配列は行列のストレージとしても機能します。

2. リンクされたリスト

リンクされたリスト これは、データ要素のコレクションを動的に格納するために使用される線形データ構造の別の例です。このデータ構造内のデータ要素は、リンクまたはポインタを使用して接続されたノードによって表されます。各ノードには 2 つのフィールドが含まれており、情報フィールドは実際のデータで構成され、ポインタ フィールドはリスト内の後続のノードのアドレスで構成されます。リンクされたリストの最後のノードのポインタは、何も指していないため、ヌル ポインタで構成されます。配列とは異なり、ユーザーは要件に応じてリンク リストのサイズを動的に調整できます。

データ構造の概要

図4. リンクされたリスト

リンク リストはさまざまなタイプに分類できます。

    単一リンクリスト:単一リンク リストは、最も一般的なタイプのリンク リストです。各ノードにはデータと、次のノードへのアドレスを含むポインタ フィールドがあります。二重リンクリスト:二重リンク リストは、1 つの情報フィールドと 2 つのポインター フィールドで構成されます。情報フィールドにはデータが含まれます。最初のポインタ フィールドには前のノードのアドレスが含まれ、別のポインタ フィールドには次のノードへの参照が含まれます。したがって、両方向 (前方だけでなく後方) に進むことができます。循環リンクリスト:循環リンク リストは単一リンク リストに似ています。唯一の重要な違いは、最後のノードに最初のノードのアドレスが含まれており、循環リンク リスト内で循環ループを形成していることです。

リンクされたリストのいくつかの応用:

  1. リンク リストは、スタック、キュー、バイナリ ツリー、および事前定義されたサイズのグラフを実装するのに役立ちます。
  2. 動的メモリ管理のためのオペレーティング システムの機能を実装することもできます。
  3. リンク リストでは、数学演算の多項式の実装も可能です。
  4. 循環リンク リストを使用して、タスクをラウンド ロビンで実行するオペレーティング システムまたはアプリケーション機能を実装できます。
  5. 循環リンク リストは、ユーザーが最後のスライドが表示された後に最初のスライドに戻る必要があるスライド ショーでも役立ちます。
  6. Double Linked List は、Web サイトの開いたページ内を前後に移動するために、ブラウザに「進む」ボタンと「戻る」ボタンを実装するために利用されます。

3. スタック

スタック は、次の線形データ構造です。 LIFO (後入れ先出し) 原則により、スタックの一端 (つまり、先頭) からの挿入や削除などの操作が可能になります。スタックは、連続メモリである配列と、不連続メモリであるリンク リストを利用して実装できます。スタックの実際の例としては、本の山、カードの山、お金の山などが挙げられます。

データ構造の概要

図5. スタックの実例

上の図は、スタックの最上部への新しい本の挿入と削除など、操作が一方の端からのみ実行されるスタックの実際の例を表しています。これは、スタック内の挿入と削除はスタックの先頭からのみ実行できることを意味します。いつでもスタックの最上位にのみアクセスできます。

スタック内の主な操作は次のとおりです。

    押す:スタックに新しい要素を挿入する操作は、プッシュ操作と呼ばれます。ポップ:スタックから要素を削除または削除する操作は、ポップ操作と呼ばれます。
データ構造の概要

図6. スタック

スタックのいくつかのアプリケーション:

  1. スタックは、再帰操作の一時ストレージ構造として使用されます。
  2. スタックは、関数呼び出し、ネストされた操作、および延期/延期された関数の補助ストレージ構造としても利用されます。
  3. スタックを使用して関数呼び出しを管理できます。
  4. スタックは、さまざまなプログラミング言語の算術式を評価するためにも利用されます。
  5. スタックは、中置式を後置式に変換する場合にも役立ちます。
  6. スタックを使用すると、プログラミング環境で式の構文をチェックできます。
  7. スタックを使用して括弧を一致させることができます。
  8. スタックを使用して文字列を反転できます。
  9. スタックは、バックトラッキングに基づいて問題を解決するのに役立ちます。
  10. グラフおよびツリー走査での深さ優先検索でスタックを使用できます。
  11. スタックはオペレーティング システムの機能でも使用されます。
  12. スタックは、編集時の UNDO および REDO 機能でも使用されます。

4. しっぽ

要素の挿入と削除にいくつかの制限がある、スタックに似た線形データ構造です。キューへの要素の挿入は一方の端で行われ、削除は他方の端で行われます。したがって、Queue データ構造は FIFO (先入れ先出し) 原則に従ってデータ要素を操作すると結論付けることができます。キューの実装は、配列、リンク リスト、またはスタックを使用して実行できます。キューの実例としては、チケット カウンターの列、エスカレーター、洗車場などがあります。

データ構造の概要

図7。 キューの実例

オフセット高さ

上の画像は、映画のチケット カウンターの実際の図です。これは、最初に来た顧客が常に最初にサービスを受けるキューを理解するのに役立ちます。最後に到着した顧客は間違いなく最後にサービスを受けることになります。キューの両端は開いており、さまざまな操作を実行できます。別の例としては、フードコートの列で、顧客は後端から挿入され、顧客が要求したサービスを提供した後、前端で取り除かれる場合があります。

キューの主な操作は次のとおりです。

    エンキュー:キューへのデータ要素の挿入または追加は、エンキューと呼ばれます。要素の挿入は常に後部ポインタを使用して行われます。デキュー:キューからのデータ要素の削除または削除は、デキューと呼ばれます。要素の削除は常にフロント ポインタを使用して行われます。
データ構造の概要

図8。

キューのいくつかの応用:

  1. キューは通常、グラフの範囲検索操作で使用されます。
  2. キューは、ユーザーが押したキーを格納するキーボード バッファ キューや、プリンタで印刷されたドキュメントを格納するプリント バッファ キューなど、オペレーティング システムのジョブ スケジューラ操作でも使用されます。
  3. キューは、CPU スケジューリング、ジョブ スケジューリング、およびディスク スケジューリングを担当します。
  4. プライオリティ キューは、ブラウザでのファイルのダウンロード操作に利用されます。
  5. キューは、周辺機器と CPU の間でデータを転送するためにも使用されます。
  6. キューは、CPU のユーザー アプリケーションによって生成された割り込みの処理も担当します。

非線形データ構造

非線形データ構造は、データ要素が順番に配置されていないデータ構造です。ここでは、データの挿入と削除を線形的に実行することはできません。個々のデータ項目の間には階層関係が存在します。

非線形データ構造の種類

以下は、私たちが通常使用する非線形データ構造のリストです。

1. 木

ツリーは非線形データ構造であり、ツリーの各ノードが値と他のノード (「子」) への参照のリストを格納するノードのコレクションを含む階層です。

ツリー データ構造は、コンピュータ内のデータを整理して収集し、より効果的に利用するための特殊な方法です。これには、中心ノード、構造ノード、およびエッジを介して接続されたサブノードが含まれます。ツリーデータ構造は、根、枝、葉がつながったものであるとも言えます。

データ構造の概要

図9。

木はさまざまな種類に分類できます。

    バイナリ ツリー:各親ノードが最大 2 つの子を持つことができるツリー データ構造は、バイナリ ツリーと呼ばれます。二分探索ツリー:二分探索ツリーは、並べ替えられた数値リストを簡単に維持できるツリー データ構造です。AVL ツリー:AVL ツリーは、自己バランス型の二分探索ツリーであり、各ノードが値が -1、0、または +1 のバランス係数と呼ばれる追加情報を保持します。B ツリー:B ツリーは、各ノードが複数のキーで構成され、3 つ以上の子を持つことができる特殊なタイプの自己平衡型二分探索ツリーです。

木の応用例:

  1. ツリーは、ディレクトリやファイル システムなどのコンピュータ システムの階層構造を実装します。
  2. ツリーは、Web サイトのナビゲーション構造を実装するためにも使用されます。
  3. Trees を使用すると、ハフマン コードのようなコードを生成できます。
  4. ツリーは、ゲーム アプリケーションでの意思決定にも役立ちます。
  5. ツリーは、優先度ベースの OS スケジューリング機能のための優先度キューの実装を担当します。
  6. ツリーは、さまざまなプログラミング言語のコンパイラーで式やステートメントを解析する役割も果たします。
  7. ツリーを使用して、データベース管理システム (DBMS) のインデックス作成用のデータ キーを保存できます。
  8. スパニング ツリーを使用すると、コンピュータおよび通信ネットワークで意思決定をルーティングできるようになります。
  9. ツリーは、人工知能 (AI)、ロボット工学、およびビデオ ゲーム アプリケーションに実装される経路探索アルゴリズムでも使用されます。

2. グラフ

グラフは、有限数のノードまたは頂点とそれらを接続するエッジで構成される非線形データ構造の別の例です。グラフは現実世界の問題に対処するために利用され、問題領域をソーシャル ネットワーク、回線ネットワーク、電話ネットワークなどのネットワークとして示します。たとえば、グラフのノードまたは頂点は電話ネットワーク内の 1 人のユーザーを表すことができ、エッジは電話を介したユーザー間のリンクを表します。

グラフ データ構造 G は、以下に示すように、一連の頂点 V と一連のエッジ E で構成される数学的構造とみなされます。

G = (V,E)

データ構造の概要

図10。 グラフ

上の図は、7 つの頂点 A、B、C、D、E、F、G と 10 個のエッジ [A、B]、[A、C]、[B、C]、[B、D] を持つグラフを表しています。 [B、E]、[C、D]、[D、E]、[D、F]、[E、F]、[E、G]。

頂点とエッジの位置に応じて、グラフはさまざまなタイプに分類できます。

    ヌルグラフ:空のエッジ セットを持つグラフは、ヌル グラフと呼ばれます。自明なグラフ:頂点が 1 つだけあるグラフは、自明なグラフと呼ばれます。単純なグラフ:自己ループも複数のエッジも持たないグラフは、単純グラフと呼ばれます。マルチグラフ:グラフが複数のエッジで構成されているが自己ループを持たない場合、そのグラフはマルチであると言われます。疑似グラフ:自己ループと複数のエッジを持つグラフは、擬似グラフと呼ばれます。無向グラフ:無向エッジで構成されるグラフは、無向グラフと呼ばれます。有向グラフ:頂点間の有向エッジで構成されるグラフは、有向グラフとして知られています。接続されたグラフ:すべての頂点のペアの間に少なくとも 1 つのパスを持つグラフは、接続されたグラフと呼ばれます。切断されたグラフ:少なくとも 1 組の頂点間にパスが存在しないグラフは、切断されたグラフと呼ばれます。通常のグラフ:すべての頂点が同じ次数を持つグラフは、通常のグラフと呼ばれます。完全なグラフ:すべての頂点が頂点の各ペアの間にエッジを持つグラフは、完全なグラフと呼ばれます。サイクルグラフ:サイクルを形成する少なくとも 3 つの頂点とエッジがある場合、グラフはサイクルであると言われます。循環グラフ:少なくとも 1 つのサイクルが存在する場合に限り、グラフは循環的であると言われます。非循環グラフ:サイクルがゼロのグラフは、非巡回グラフと呼ばれます。有限グラフ:有限数の頂点と辺を持つグラフは、有限グラフとして知られています。無限グラフ:無限の頂点と辺を持つグラフは、無限グラフとして知られています。二部グラフ:頂点が独立したセット A と B に分割でき、セット A のすべての頂点がセット B に存在する頂点にいくつかのエッジでのみ接続される必要があるグラフは、二部グラフと呼ばれます。平面グラフ:2 つのエッジが交差する単一の平面内にグラフを描画できる場合、そのグラフは平面であると言われます。オイラーグラフ:すべての頂点が偶数次である場合にのみ、グラフはオイラーであると言われます。ハミルトニアン グラフ:ハミルトニアン回路から構成される接続グラフは、ハミルトニアン グラフとして知られています。

グラフの応用例:

  1. グラフは、交通、旅行、通信アプリケーションでルートとネットワークを表現するのに役立ちます。
  2. グラフは GPS でルートを表示するために使用されます。
  3. グラフは、ソーシャル ネットワークやその他のネットワーク ベースのアプリケーションの相互接続を表現するのにも役立ちます。
  4. グラフはマッピング アプリケーションで利用されます。
  5. グラフは、電子商取引アプリケーションでユーザーの好みを表現する役割を果たします。
  6. グラフは、地方自治体の企業に生じる問題を特定するために、公共事業ネットワークでも使用されます。
  7. グラフは、組織内のリソースの使用状況と可用性を管理するのにも役立ちます。
  8. グラフは、ハイパーリンクを介したページ間の接続を表示するために、Web サイトのドキュメント リンク マップを作成するためにも使用されます。
  9. グラフはロボットの動作やニューラル ネットワークでも使用されます。

データ構造の基本操作

次のセクションでは、あらゆるデータ構造のデータを操作するために実行できるさまざまな種類の操作について説明します。

    トラバーサル:データ構造をトラバースするとは、各データ要素に 1 回だけアクセスして管理できるようにすることを意味します。たとえば、部門内のすべての従業員の名前を印刷する場合、トラバースが必要になります。検索:検索は別のデータ構造操作であり、特定の制約を満たす 1 つ以上のデータ要素の場所を見つけることを意味します。このようなデータ要素は、指定されたデータ要素のセットに存在する場合もあれば、存在しない場合もあります。たとえば、検索操作を使用して、5 年以上の経験を持つすべての従業員の名前を見つけることができます。挿入:挿入とは、コレクションに新しいデータ要素を挿入または追加することを意味します。たとえば、挿入操作を使用して、会社が最近雇用した新入社員の詳細を追加できます。削除:削除とは、指定されたデータ要素のリストから特定のデータ要素を削除または削除することを意味します。たとえば、削除操作を使用して、離職した従業員の名前を削除できます。並べ替え:並べ替えとは、アプリケーションの種類に応じてデータ要素を昇順または降順に並べることを意味します。たとえば、ソート操作を使用して、部門内の従業員の名前をアルファベット順に並べたり、従業員のパフォーマンスを降順に並べて上位 3 人の詳細を抽出することで、その月の上位 3 人のパフォーマンスを推定したりできます。マージ:マージとは、ソートされた 2 つのリストのデータ要素を結合して、ソートされたデータ要素の 1 つのリストを形成することを意味します。作成する:作成は、プログラムのデータ要素用にメモリを予約するために使用される操作です。この操作は宣言ステートメントを使用して実行できます。データ構造の作成は、次のいずれかの際に実行できます。
    1. コンパイル時
    2. ランタイム
      たとえば、 malloc() 関数はC言語でデータ構造を作成するために使用されます。
    選択:選択とは、利用可能なデータの中から特定のデータを選択することを意味します。ループ内で条件を指定することで、特定のデータを選択できます。アップデート:Update 操作を使用すると、データ構造内のデータを更新または変更できます。また、選択操作など、ループ内でいくつかの条件を指定することで、特定のデータを更新することもできます。分割:分割操作により、データをさまざまなサブパートに分割できるため、全体のプロセス完了時間を短縮できます。

抽象データ型を理解する

によると 米国国立標準技術研究所 (NIST) 、データ構造は、アルゴリズムの効率を高めるために、一般にメモリ内に配置された情報です。データ構造には、リンク リスト、スタック、キュー、ツリー、辞書が含まれます。また、人の名前や住所のような理論的な実体である場合もあります。

上記の定義から、データ構造における操作には次のものが含まれると結論付けることができます。

ビューとテーブル
  1. リストへの項目の追加や削除などの高度な抽象化。
  2. リスト内の項目を検索および並べ替えます。
  3. リスト内の最も優先度の高い項目にアクセスします。

データ構造がそのような操作を行うとき、それは常に、 抽象データ型 (ADT)

これを、データに対する操作とともにデータ要素のセットとして定義できます。 「抽象」という用語は、データとそのデータに定義されている基本的な操作が、その実装とは独立して研究されているという事実を指します。これには、データをどのように実行できるかではなく、データを使用して何ができるかが含まれます。

ADI 実装には、基本的な操作のためのデータ要素とアルゴリズムを保存するためのストレージ構造が含まれています。配列、リンク リスト、キュー、スタックなどのすべてのデータ構造は ADT の例です。

ADT を使用する利点を理解する

現実の世界では、プログラムは新しい制約や要件の結果として進化するため、プログラムを変更するには、通常、1 つまたは複数のデータ構造の変更が必要になります。たとえば、各従業員に関する詳細を追跡するために、従業員のレコードに新しいフィールドを挿入するとします。この場合、配列を Linked 構造に置き換えることでプログラムの効率を向上させることができます。このような状況では、変更された構造を利用するすべてのプロシージャを書き直すことは適切ではありません。したがって、より良い代替案は、データ構造をその実装情報から分離することです。これが、抽象データ型 (ADT) の使用の背後にある原則です。

データ構造のいくつかの応用

データ構造のいくつかの応用例を次に示します。

  1. データ構造は、コンピュータのメモリ内のデータの編成に役立ちます。
  2. データ構造は、データベース内の情報を表現するのにも役立ちます。
  3. データ構造を使用すると、データを検索するアルゴリズムの実装が可能になります (検索エンジンなど)。
  4. データ構造を使用して、データを操作するアルゴリズムを実装できます (ワード プロセッサなど)。
  5. データ構造 (データマイナーなど) を使用してデータを分析するアルゴリズムを実装することもできます。
  6. データ構造は、データを生成するアルゴリズム (乱数ジェネレーターなど) をサポートします。
  7. データ構造は、データを圧縮および解凍するアルゴリズム (zip ユーティリティなど) もサポートします。
  8. データ構造を使用して、データを暗号化および復号化するアルゴリズムを実装することもできます (セキュリティ システムなど)。
  9. データ構造の助けを借りて、ファイルとディレクトリを管理できるソフトウェア (ファイル マネージャーなど) を構築できます。
  10. データ構造を使用してグラフィックをレンダリングできるソフトウェアを開発することもできます。 (たとえば、Web ブラウザーや 3D レンダリング ソフトウェア)。

これら以外にも、前述したように、目的のソフトウェアの構築に役立つデータ構造のアプリケーションが他にもたくさんあります。