割り当てとして、再帰的にではなくクイックソートを繰り返し実装する必要があります。これを行うには、スタックを使用する必要があります。このシナリオでスタックを使用するメリットは、単独または二重にリンクされたリストだけです。スタックを使用するメリットと二重リンクリストを比較する
答えて
プッシュはスタックにO(1)時間の複雑さがあり、挿入にはO(N)がある場合があります(ヘッドに追加すると最適なケースが発生します、O(1) linkedList内の(N)を返します。追加操作と検索操作の両方を実行する必要があるため、LinkedListを使用するとより多くの費用がかかります
これはまったく真実ではありません。スタックをリンクされたリストとして実装することができ、常にヘッドに追加したり削除したりすることができます。どちらの操作もO(1)です。 –
この回答はより多くのダウンワードを必要とします –
簡単な答えは表現力です。コメントで指摘したように、リンクされたリストを使ってスタックを実装できます。 "スタックの使用"に関する素晴らしい点は、実装の詳細を心配する必要がないことです。それは、あなただけのリンクリストを使用した場合、あなたはのようなものがあるだろうさ:既存のStack
データ構造を使用している場合
// push onto the stack
newNode = createStackNode(myData);
newNode.Next = root;
root = newNode;
// pop from stack
poppedNode = root;
root = root.Next;
myData = poppedNode.data;
を、あなたはプッシュとポップの詳細を心配する必要はありません。あなたが書かなければならないすべては、次のとおりです。
theStack.push(myData);
または
myData = theStack.pop();
ポイントは、あなたがStack
データ構造の作品を知っているということで。 push
またはpop
への電話をかけるのは本当に難しいです。それは非常に簡単です物事を追加し、リンクされたリストの頭から物事を削除するコードを台無しにする。
スタックは、定義する必要がある一連の操作を定義するインターフェイスであり、リンクされたリスト、ダブルリンクされたリスト、配列など、さまざまな方法で実装できます(必要に応じて、私はそう示唆していない場合でも)。この一連の操作の定義は、データ構造の範囲を制限し、特定のユースケースに対してより良いパフォーマンスを得ることを可能にします。
一般に、リンクリストまたは配列から要素を削除するには、削除する要素が任意の位置にある可能性があるため、O(n)
を取得する必要があります。同じデータ構造を持つpop
を実装するスタックでは、削除する要素がどこにあるかを既に知っているので(の場合はリンク先リストの場合は先頭、配列の場合は最後の要素)、これを実現できます。
- 1. 二重リンクリストを使用したC++スタック
- 2. 二重リンクリストを使用したスタックとキュー
- 3. 二重リンクリストは、ソートをマージするとスタックになる - Java
- 4. Javaの二重比較
- 5. 二重比較の問題
- 6. 二重リンクリスト
- 7. 二重リンクリスト
- 8. 二重リンクリスト
- 9. 二重リンクリスト - ガベージコレクション
- 10. 二重リンクリスト
- 11. 二重リンクリスト
- 12. 二重リンクリストの実際の使用
- 13. Linux RCUと二重リンクリスト
- 14. 二重リンクリストBig Three
- 15. 円、二重リンクリスト - セグメンテーションフォールト
- 16. 二重のリンクリストC++
- 17. 二重リンクリストでアルゴリズムをソート
- 18. ここでは二重の比較
- 19. Pythonでの二重比較の略語
- 20. javascriptの一重引用符と二重引用符の比較 - 厳密な型
- 21. C++ Forループを使って二重リンクリストを作成する
- 22. 配列やスタックを宣言するときに二重リンクリストを宣言できるクラスがありますか?
- 23. SIPスタック比較
- 24. いつリンクリストとC++のスタックを使用するのですか
- 25. アイテムを削除 - テール再帰を使用した二重リンクリスト
- 26. 二重リンクリストの混乱
- 27. Hashtable /二重リンクリストのメモリリーク
- 28. 二重リンクリストの変なコピーコンストラクタ
- 29. スワップ要素二重リンクリスト
- 30. 「壊れた二重リンクリストは、」
スタックは、基本的に、ヘッドを追加、削除、または読み込むリンクリストです。 –
技術的には、繰り返しクイックソートにキューまたはスタックを使用することができ、どちらか(キューまたはスタック)をpush()またはpop()のO(1)時間の複雑さでリンクリストとして実装できます。 – rcgldr