スタックは抽象データ型と呼ばれ、インターフェースに他なりません。それでは、スタックがデータ構造のトピックに含まれるのはなぜですか。これはデータ構造ですか、それとも抽象データ型ですか。どちらも同じですか、それとも異なりますか。
4 に答える
ウィキペディアから:
Abstract data types
純粋に理論的なエンティティであり、(とりわけ)抽象的なアルゴリズムの説明を簡素化し、データ構造を分類および評価するために使用されますコンピュータサイエンスでは、a
data structure
は、効率的に使用できるようにデータをコンピュータに保存および整理する特定の方法です。を説明する1つの方法は、
stack
後入れ先出し(LIFO)抽象データ型と線形データ構造です。スタックは、要素として任意の抽象データ型を持つことができますが、プッシュとポップ(またはプル)と呼ばれる2つの基本的な操作によって特徴付けられます。
したがって、抽象データ型は理論的であると結論付けることができますが、実現されるとデータ構造と呼ばれます。
より明確にするために:
データ型は、その操作の観点から定義され、その実装が非表示になっている場合、抽象的であると見なすことができます(したがって、効率上の理由などで、ある実装を常に別の実装に置き換えることができます。これにより、データ型の内容が妨げられることはありません。プログラム)。
スタックは抽象データ型であり、線形データ構造とも呼ばれます。後入れ先出し(LIFO)戦略に従うため、データ構造の一部です。
抽象データ型(ADT)は、データセットの仕様の理論上のセットと、セット内のデータに対して実行できる操作のセットです。データ型は、さまざまな具体的な実装から独立している場合、抽象と呼ばれます。
整数が加算、乗算、除算の演算をサポートしているとしましょう。
これらの操作は、乗算をサポートできないため、文字列データでは機能しません。したがって、整数はADTではありません。
今、あなたはポイントを取得します、
データ型に対する操作が、抽象データ構造と呼ばれるデータの種類を気にしない場合。たとえば、Stack、list、queue…ここでは、push()、pop()、add()、delete()などの操作をサポートします。プッシュ、ポップ、削除するものを気にします。
ここでは、実装のタイプ(リスト、スタック、キュー)に応じて、これらのADTの管理方法を決定します。
スタックが抽象データ型である理由
`Stack s = new Stack<>();
List l = new LinkedList<>();
s.push(45);
s.push("str");
//s.push("String");
if(s.peek().equals(45)){
System.out.println("Treu");
}`
これ以上の説明は必要ないと思います。
スタックには主にプッシュとポップの2つの操作があり、キューには挿入と削除があるため、スタックとキューは抽象データ型と呼ばれます。データのセットを操作する場合、セットに含まれている必要のあるデータのタイプはありません。たとえば、中置(つまり、a + b)から後置式(つまり、ab +)に変換する場合、そのセットには、括弧、数字のセット、文字のセット、または3つの組み合わせが含まれる場合があります。そのため、スタックとキューは抽象データ型と呼ばれます。