ベストアンサー
コンピューターサイエンスでは、抽象データ型( ADT )は、の数学モデルです。 <の観点から、データ型がその動作(セマンティクス)によって定義されるデータ型データの/ div> user 、特に可能な値、このタイプのデータに対する可能な操作、およびこれらの操作の動作に関して。これは、データの具体的な表現であり、ユーザーではなく実装者の視点であるデータ構造とは対照的です。
データ構造から:
コンピューターサイエンスでは、データ構造は、データをコンピューターで整理して
効率的に。
データ構造は、1つ以上の特定の抽象データ型を実装できます (ADT)、これは操作の契約とその複雑さ
データ構造は、ADTによって提供される契約の具体的な実装です
意味は次のとおりです:
1。 ADTは、ユーザーの観点から見た抽象表現です
2。 DSは具体的な表現であり、ユーザーの観点からはではありません
簡単に言うと:
1。 スタックはADT であり、ユーザーが使用するプッシュ、ポップなどが必要であることを指定するだけです。
2。スタック(キューなどの他のADTと同様)は、 配列またはリスト(リンクリストなど)
概要:
スタックはDSではなくADTであり、他のDS。
お役に立てば幸いです。
幸運を祈ります
回答
スタック
スタックは、後入れ先出し(LIFO)の原則に従って挿入および削除されるオブジェクトのコンテナーです。プッシュダウンスタックでは、アイテムをスタックにプッシュする操作とポップの2つの操作のみが許可されます。 >スタックからのアイテム。スタックはアクセスが制限されたデータ構造です。要素はスタックの一番上でのみ追加および削除できます。 プッシュはスタックの一番上にアイテムを追加し、ポップはアイテムを一番上から削除します。役に立つ例えは、本の山を考えることです。一番上の本だけを削除でき、一番上に新しい本を追加することもできます。
スタックは再帰的データ構造です。スタックの構造的な定義は次のとおりです。
アプリケーション
- スタックの最も簡単なアプリケーションは、単語を逆にすることです。指定された単語をスタックに(文字ごとに)プッシュしてから、スタックから文字をポップします。
- 別のアプリケーションは、テキストエディタの「元に戻す」メカニズムです。この操作は、すべてのテキスト変更をスタックに保持することによって実行されます。 バックトラッキング。これは、一連の要素の最新のデータ要素にアクセスする必要がある場合のプロセスです。迷路や迷路を考えてみてください-入口から出口への道をどのように見つけますか?行き止まりに達したら、後戻りする必要があります。しかし、どこに戻るのでしょうか?前の選択ポイントに。したがって、各選択ポイントで、可能なすべての選択肢をスタックに格納します。次に、バックトラックとは、スタックから次の選択肢をポップすることを意味します。
- 言語処理:パラメータとローカル変数のスペースは、stack.compilerを使用して内部的に作成されます。一致する中括弧の構文チェックは、stack.supportを使用して実装されます。再帰の場合
実装
クラスの標準ライブラリでは、データ型スタックはアダプタークラス。これは、スタックが他のデータ構造の上に構築されることを意味します。スタックの基礎となる構造は、配列、ベクトル、ArrayList、リンクリスト、またはその他のコレクション。基になるデータ構造のタイプに関係なく、スタックは同じ機能を実装する必要があります。これは、独自のインターフェースを提供することで実現されます:
public interface StackInterface
{
public void push(AnyType e);
public AnyType pop();
public AnyType peek();
public boolean isEmpty();
}
次の図は、構成別の実装のアイデアを示しています。
(上記のインターフェイスに加えて)別の実装要件は、すべてのスタック操作を
一定時間O(1)で実行する必要があることです。
。一定時間とは、スタックサイズに関係なく、操作にkナノ秒の計算時間がかかるような定数kがあることを意味します。
配列ベースの実装
配列ベースの実装では、次のフィールドを維持します。デフォルトサイズの配列A(≥1 )、スタックの最上位要素を参照する変数 top と、その容量配列サイズを指します。変数 top が-1からcapacity - 1
に変わります。 top = -1
の場合はスタックが空であり、top = capacity-1
の場合はスタックがいっぱいであると言います。
固定-サイズスタックの抽象化。容量は変更されないため、 top が容量に達すると、スタックオブジェクトは例外をスローします。
top が容量に達すると動的スタック抽象化で、スタックサイズを2倍にします。
リンクリストベースの実装
リンクリストベース実装は、(効率の観点から)最良の動的スタック実装を提供します。
ソース-スタックとキュー