チェーンキュー
ストレージ構成実際にはキュー、単鎖形リニア、それだけで私たちはチェーンをキューにそれを呼び出す、それから頭部にそれが終了することができます。
チェーンキューおよび単一のリストので、観測されたキューLinkedQueueチェーンと単一リンクリストLinkedListのUMLクラス図として、次の2つの間の関係を重合さ見ることができ、またLinkedQueue同等LinkedListのメンバ変数は言った、と私たちは、チェーンを言う前に、スタックは同じである
場合であり、オブジェクトが実現リストLinkedListのを作成し、メソッドのリストを呼び出すことは、当然のことながら、キュー・インタフェースが実装LinkedQueueでき
package DS02.动态链表;
import DS01.动态数组.Queue;
import java.util.Iterator;
public class LinkedQueue<E> implements Queue<E> {
//声明并创建单链表对象
private LinkedList<E> list;
public LinkedQueue() {
list = new LinkedList<>();
}
@Override
public int getSize() {
return list.getSize();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public void enqueue(E e) {
list.addLast(e);
}
@Override
public E dequeue() {
return list.removeFirst();
}
@Override
public E getFront() {
return list.getFirst();
}
@Override
public E getRear() {
return list.getLast();
}
@Override
public void clear() {
list.clear();
}
@Override
public Iterator<E> iterator() {
return list.iterator();
}
}
比較円形キューとキューチェーン
比較循環キューとキューチェーンのために、二つの方法で考えることができます。
- 時から、実際には、彼らの基本的な操作は、時間定数であり、また、時間の複雑さはO(1)ですが、アプリケーションは、良い循環キュースペースを実現することで、使用中に放出されず、各アプリケーションとリリースのノードのキューチェーンチームにチームが頻繁に、2つの微妙な違いがある場合があるにも、いくつかの時間を過ごすことになります。
- 空間のため、円形キューは固定長を有していなければならないので、記憶素子と無駄なスペースの問題の数があるが、それはポインタフィールドを必要とするが、この問題は、キューチェーン存在しない、空間内のいくつかのオーバヘッドそれはまた、許容可能であるため、キュースペースのチェーンは、より柔軟な。
一般に、最大キューの長さが、それを決定することができる場合でないキュー長の推定値と、キューのチェーンを使用し、循環キューを推奨。