抽象データ型:ADTは、特定の実装とは無関係に正確に指定されたデータ値と関連操作のセットとして定義できます。したがって、抽象データ型は、組織化された情報のコレクションと、その情報を管理するために使用される一連の操作です。操作のセットは、ADTのインターフェースを定義します。ADTがインターフェイスの条件を満たしている限り、ADTの実装方法は重要ではありません。ADTでは、データ値と演算はコンピューター言語での実装としてではなく、数学的な精度で定義されているため、演算の効果、プログラムがデータ型を実装するかどうかなど、他の抽象データ型との関係について推論する場合があります。
抽象データ型(ADT)と具象データ型の基本的な違いは、後者は具象表現を見ることができるのに対し、前者は具象表現を隠すことです。ADTは、純粋なADTまたは更新可能なADTである場合があります。純粋なADTは、すべての操作が純粋な関数であるものです。これは、操作に副作用がないことを意味します。特に、それらはそこで入力引数を変更または更新しません。これらの引数を使用して、ADT(または他のタイプ)の新しい値である出力を生成します。ほとんどの具体的な型は純粋です。たとえば、整数を操作しても実際に整数が変更されることはありません。代わりに、「+」などのすべての操作が新しい出力を生成します。
更新可能なADTは、一部の操作が実際にADTの値を変更するものです。たとえば、スタックを引数として取り、それを変更する「pop」という操作があるとします。(「インプレース」、「破壊的」)、最も優先度の高いアイテムを削除します。この操作は不純であると見なされ、ADT全体も不純になります。ADTは、ユーザー定義のADTである場合があります。
抽象データ型は、次の2つの条件を満たすデータ型であることを知っています。
タイプと操作の表現または定義は、単一の構文単位に含まれています。
型のオブジェクトの表現は、その型を使用するプログラムユニットから隠されているため、それらのオブジェクトで可能な直接的な操作のみが、型の定義で提供されます。
ユーザー定義の抽象データ型は以下を提供する必要があります。
プログラム単位で型の変数を宣言できるが、これらの変数の表現を隠す型定義。
タイプのオブジェクトを操作するための一連の操作。
ユーザー定義の抽象データ型の例は構造です。「C」は、int、char、float、doubleの4つの基本タイプを提供します。ただし、「C」はプログラマに自分のタイプを定義する機能も提供します。構造はその一例です。構造は、さまざまなパーツの集合体であり、各パーツは既存のタイプです。
struct abc
{int x;
float y;
};
上記の構造定義は変数を作成せず、新しいタイプを作成します。このタイプの変数は、組み込みタイプの変数と同様の方法で作成できます。
struct abc a;
typedefキーワードを使用すると、新しいタイプの新しいタイプ名を作成できます。
例えば:
typedef struct abc AB;
ここで、ABは、新しいタイプの作成に使用できる新しいタイプ名です。
AB b;
データ構造:データ構造の特徴は次のとおりです。
コンポーネントデータ項目が含まれます。これは、アトミックまたは別のデータ構造(ドメインのまま)である場合があります。
1つ以上のコンポーネント項目に対する一連の操作。
コンポーネントが相互にどのように関係し、構造全体に関係するかに関する規則を定義します(アサーション)。
データ構造:
データ構造は静的または動的です。静的データ構造のサイズは固定されています。この意味は、静的修飾子の意味とは異なります。配列は静的です。保持できる要素の数を定義すると、その数は変わりません。動的データ構造は、そのコンテンツの要求に応じて実行時に拡大および縮小します。動的データ構造は、リンクを使用して実装されます。
データ構造は、線形データ構造と非線形データ構造にさらに分類できます。線形データ構造では、最初と最後の要素を除いて、すべてのコンポーネントに一意の先行要素と後続要素がありますが、非線形データ構造の場合、使用する方法によって制限される任意の方法で要素を配置できるため、このような制限はありませんそのようなタイプを表します。