logo

データ構造のチュートリアル

DS チュートリアル

データ構造 (DS) チュートリアルでは、データ構造の基本概念と高度な概念を説明します。データ構造チュートリアルは初心者と専門家向けに設計されています。

データ構造は、データを効率的に使用できるように保存および整理する方法です。

データ構造チュートリアルには、配列、ポインター、構造、リンク リスト、スタック、キュー、グラフ、検索、並べ替え、プログラムなどのデータ構造のすべてのトピックが含まれています。

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

データ構造名は、メモリ内でデータを編成すること自体を示します。データ構造の 1 つ、つまり C 言語の配列についてはすでに説明したように、メモリ内のデータを編成する方法は数多くあります。配列は、データが順番に、つまり次々に格納されるメモリ要素の集合です。つまり、配列は要素を連続的に格納していると言えます。このデータの編成は、一連のデータ構造を利用して行われます。メモリ内のデータを整理する他の方法もあります。さまざまなタイプのデータ構造を見てみましょう。

データ構造は、C、C++、Java などのプログラミング言語ではありません。これは、メモリ内のデータを構造化するために任意のプログラミング言語で使用できる一連のアルゴリズムです。

メモリ内のデータを構造化するために、「n」個のアルゴリズムが提案されており、これらのアルゴリズムはすべて抽象データ型として知られています。これらの抽象データ型は一連のルールです。

データ構造のチュートリアル

データ構造の種類

データ構造には次の 2 種類があります。

アトイC
  • プリミティブなデータ構造
  • 非プリミティブなデータ構造

プリミティブデータ構造

プリミティブ データ構造はプリミティブ データ型です。 int、char、float、double、およびポインタは、単一の値を保持できる基本的なデータ構造です。

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

非プリミティブ データ構造は、次の 2 つのタイプに分類されます。

  • 線形データ構造
  • 非線形データ構造

線形データ構造

シーケンシャルな方法でのデータの配置は、線形データ構造として知られています。この目的に使用されるデータ構造は、配列、リンク リスト、スタック、キューです。これらのデータ構造では、1 つの要素が他の要素とのみ線形で接続されています。

1 つの要素が「n」個の要素に接続されている場合、非線形データ構造として知られています。最良の例はツリーとグラフです。この場合、要素はランダムに配置されます。

mysql 表示ユーザー

上記のデータ構造については、次のトピックで簡単に説明します。ここで、これらのデータ構造に対して実行できる一般的な操作を見ていきます。

データ構造は次のように分類することもできます。

    静的データ構造:これは、コンパイル時にサイズが割り当てられるデータ構造の一種です。したがって、最大サイズは固定されています。動的データ構造:これは、実行時にサイズが割り当てられるデータ構造の一種です。したがって、最大サイズは柔軟です。

主な業務

データ構造に対して実行できる主な操作または一般的な操作は次のとおりです。

    検索中:データ構造内の任意の要素を検索できます。並べ替え:データ構造の要素を昇順または降順に並べ替えることができます。挿入:新しい要素をデータ構造に挿入することもできます。アップデート:要素を更新することもできます。つまり、要素を別の要素に置き換えることもできます。削除:削除操作を実行して、データ構造から要素を削除することもできます。

どのデータ構造ですか?

データ構造は、データを効率的に使用できるように編成する方法です。ここでは、空間的にも時間的にも効率的に言葉を使いました。たとえば、スタックは実装に配列またはリンク リスト データ構造を使用する ADT (抽象データ型) です。したがって、特定の ADT を実装するには何らかのデータ構造が必要であると結論付けます。

ADT は次のように伝えます。 実行されるべきであり、データ構造がそれを伝える どうやって それは行われることです。言い換えれば、ADT が設計図を提供し、データ構造が実装部分を提供すると言えます。ここで、特定の ADT に使用されるデータ構造をどのようにして知ることができるのかという疑問が生じます。

特定の ADT ではさまざまなデータ構造を実装できますが、さまざまな実装は時間と空間に関して比較されます。たとえば、スタック ADT は配列とリンク リストの両方で実装できます。アレイが時間効率を提供し、リンク リストがスペース効率を提供すると仮定すると、現在のユーザーの要件に最も適したものが選択されます。

データ構造の利点

データ構造の利点は次のとおりです。

    効率:特定の ADT を実装するためのデータ構造の選択が適切であれば、プログラムは時間とスペースの点で非常に効率的になります。再利用性:データ構造により再利用性が提供されるため、複数のクライアント プログラムがデータ構造を使用できます。抽象化:ADT によって指定されるデータ構造も抽象化のレベルを提供します。クライアントはデータ構造の内部動作を見ることができないため、実装部分について心配する必要はありません。クライアントはインターフェイスのみを見ることができます。

データ構造索引


DS の基本

  • DSの紹介
  • Ds 漸近分析
  • DSの構造

DSアレイ

  • 2D 配列

DS リンクリスト

  • リンクされたリスト
    • 冒頭に挿入
    • 最後に挿入
    • 指定したノードの後に​​挿入
    • 先頭の削除
    • 最後に削除
    • 指定ノード以降の削除
    • トラバース中
    • 検索中
  • 二重リンクリスト
    • 冒頭に挿入
    • 最後に挿入
    • 指定したノードの後に​​挿入
    • 先頭の削除
    • 最後に削除
    • 与えられたデータを持つノードの削除
    • トラバース中
    • 検索中
  • 循環リンクリスト
    • 冒頭に挿入
    • 最後に挿入
    • 先頭の削除
    • 最後に削除
    • トラバース中
    • 検索中
  • 循環二重リスト
    • 冒頭に挿入
    • 最後に挿入
    • 先頭の削除
    • 最後に削除

DSスタック

DSテール

DS ツリー

二分探索木と二分木

DSグラフ

DS の検索

DSソーティング

面接の質問

メガバイトとギガバイトの違いは何ですか
  • 単一リンクリストを作成および表示するプログラム
  • n個のノードの単一リンクリストを作成し、ノードの数を数えるプログラム
  • n個のノードの単一リンクリストを作成し、それを逆順に表示するプログラム
  • 単一リンクリストの先頭から新しいノードを削除するプログラム
  • 単一リンクリストの途中から新しいノードを削除するプログラム
  • 単一リンクリストの末尾からノードを削除するプログラム
  • 単一リンクリストが回文であるかどうかを判断するプログラム
  • 単一リンクリストから最大値ノードと最小値ノードを見つけるプログラム
  • 単一リンクリストの中央に新しいノードを挿入するプログラム
  • 単一リンクリストの先頭に新しいノードを挿入するプログラム
  • 単一リンクリストの最後に新しいノードを挿入するプログラム
  • 単一リンクリストから重複要素を削除するプログラム
  • 単一リンクリスト内の要素を検索するプログラム
  • 単一リンクリストの要素をソートするプログラム
  • データを交換せずに単一リンクリスト内のノードを交換するプログラム
  • 単一リンクリストの最後の要素を最初の要素から交換するプログラム

二重リンクリストプログラム

  • 指定された二分木を二重リンクリストに変換するプログラム
  • 三分木から二重リンクリストを作成するプログラム
  • N個のノードの二重リンクリストを作成し、ノード数を数えるプログラム
  • N個のノードの二重リンクリストを作成し、それを逆順に表示するプログラム
  • 二重リンクリストを作成・表示するプログラム
  • 二重リンクリストの先頭から新しいノードを削除するプログラム
  • 二重リンクリストの末尾から新しいノードを削除するプログラム
  • 二重リンクリストの途中から新しいノードを削除するプログラム
  • 二重リンクリストから最大値ノードと最小値ノードを見つけるプログラム
  • 二重リンクリストの先頭に新しいノードを挿入するプログラム
  • 二重リンクリストの最後に新しいノードを挿入するプログラム
  • 二重リンクリストの途中に新しいノードを挿入するプログラム
  • 二重リンクリストから重複要素を削除するプログラム
  • 二重リンクリストをN個のノードごとに回転させるプログラム
  • 二重リンクリスト内の要素を検索するプログラム
  • 二重リンクリストの要素をソートするプログラム

循環リンクリストプログラム

  • N個のノードの循環リンクリストを作成し、ノード数を数えるプログラム
  • N個のノードの循環リンクリストを作成し、それを逆順に表示するプログラム
  • 循環リンクリストを作成および表示するプログラム
  • 循環リンクリストの先頭から新しいノードを削除するプログラム
  • 循環リンクリストの末尾から新しいノードを削除するプログラム
  • 循環リンクリストの途中から新しいノードを削除するプログラム
  • 循環リンクリストから最大値と最小値のノードを見つけるプログラム
  • 循環リンクリストの先頭に新しいノードを挿入するプログラム
  • 循環リンクリストの最後に新しいノードを挿入するプログラム
  • 循環リンクリストの途中に新しいノードを挿入するプログラム
  • 循環リンクリストから重複要素を削除するプログラム
  • 循環リンクリスト内の要素を検索するプログラム
  • 循環リンクリストの要素をソートするプログラム

ツリープログラム

  • 二分木の奇数レベルと偶数レベルのノードの合計の差を計算するプログラム
  • 二分探索木を構築し、削除と順序走査を実行するプログラム
  • 二分木を二分探索木に変換するプログラム
  • すべての葉が同じレベルにあるかどうかを判断するプログラム
  • 2 つの木が同一であるかどうかを判断するプログラム
  • 二分木の最大幅を求めるプログラム
  • 二分木で最大の要素を見つけるプログラム
  • 木の最大の深さまたは高さを見つけるプログラム
  • 二分木で最大距離にあるノードを見つけるプログラム
  • 二分木の最小要素を見つけるプログラム
  • 二分木のすべてのノードの合計を求めるプログラム
  • N 個のキーで可能な二分探索木の総数を求めるプログラム
  • リンクリストを使用して二分木を実装するプログラム
  • 二分木内のノードを検索するプログラム

前提条件

データ構造を学習する前に、C の基本的な知識が必要です。

観客

データ構造チュートリアルは、初心者と専門家を支援するように設計されています。

問題

このデータ構造チュートリアルでは問題が見つからないことを保証します。ただし、間違い等がございましたらお問い合わせフォームよりご連絡ください。