データ構造とアルゴリズム分析の章

第III章テーブル、スタックとキュー

この章では、タイトルなど、三つの基本的な、最も単純なデータ構造について説明します。
この章では、に焦点を当てています。

  • 抽象データ型(ADT)の概念を導入
  • これは、効果的にテーブルを操作する方法を説明します
  • ADTは、再帰の実現への応用を紹介します
  • はじめにキューADTとオペレーティングシステムとアルゴリズムの設計への応用

抽象データ型(抽象データ型、ADT)されますデータおよび基本的な算術演算を記憶するための記憶構造を実現

表1. ADT

データを格納するための単純な連続した線状構造、実装方法:

  • アレイ達成
  • ポインタ実現
  • 達成カーソル

線形時間で完了することができるテーブル上のすべての操作は、配列が動的に割り当てられ、アレイを実装するために使用することができ、テーブルの最大値を推定する必要は、アレイは、がprintlistとして利益を得る特定の操作の対象と操作を見つけることができますしかし、挿入及び削除コストは、高価であり、要素の挿入後に挿入する必要がある、これら二つの動作の最悪の場合の複雑で、前進位置を除去するために後方に一つの位置をシフトさを要求される(nはOであります)、配列は、この構造を達成するために、一般的にそれほど単純ではありません

線形コストの挿入や削除を避けるために、我々は継続的なテーブルは、(メモリに)格納されて許可することはできません、我々は、実装するためのポインタ(本は非常に簡単です、私は実装スマートポインタ+テンプレートを使用)を使用した
HTTPS://をblog.csdn.net/lancelot0902/article/details/91364882

言語は、ポインタをサポートしていない場合、我々は第三の方法を使用することができます-カーソルの方法を、我々は、例えば、配列内の次のデータの横に、次のインデックスポイントを含む構造体の配列、およびデータ構造を設定する[1] = 2 CursorAllocとCursorFreeを制御して、我々は、アレイを使用するので、ノードを追加または削除する新しいおよび遊離性質が存在しないので、我々は、空きリストチェーンを維持するために、[1]後継要素は、[2]で示しますリストには、持ち帰りに空きリストから要素を追加する要素を削除する場合、削除されたノードは空きリストに追加されて入れて行く
https://blog.csdn.net/lancelot0902/article/details/91413853を

スタックADT

  • リストの実装
  • アレイ達成

用途:関数呼び出しは、すべての重要な情報を格納する際の関数呼び出しは、(活動記録は、どのようなスタックフレーム)、あなたはこの情報を保持するためにスタックを使用することができますが、その後、制御は、実装後に、新しい機能の操作を行う新機能に転送され、発生しましたこの情報は、元の関数のコントロール転送から転送されるので、再帰を使用する場合、ベースラインシナリオを忘れることができず、再帰的プロセスは、スタックオーバーフローを引き起こす可能性がどちらも、長すぎることができない、それは時々再帰ループの代わりに使用されますときに良い選択

キュー

  • リストの実装
  • アレイ達成

循環キューの注意を達成するには、2つのポイントがあります。

  • キューが空であるか否かを検出することが重要です
  • キューサイズが計算され、フロントとリアによって暗黙的です

おすすめ

転載: blog.csdn.net/lancelot0902/article/details/91364684