データ構造とアルゴリズム(IX)鎖キュー - ストレージ構造のキュー

チェーンキュー


ストレージ構成実際にはキュー、単鎖形リニア、それだけで私たちはチェーンをキューにそれを呼び出す、それから頭部にそれが終了することができます。

チェーンキューおよび単一のリストので、観測されたキュー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つの微妙な違いがある場合があるにも、いくつかの時間を過ごすことになります。
  • 空間のため、円形キューは固定長を有していなければならないので、記憶素子と無駄なスペースの問題の数があるが、それはポインタフィールドを必要とするが、この問題は、キューチェーン存在しない、空間内のいくつかのオーバヘッドそれはまた、許容可能であるため、キュースペースのチェーンは、より柔軟な。

一般に、最大キューの長さが、それを決定することができる場合でないキュー長の推定値と、キューのチェーンを使用し、循環キューを推奨。

公開された70元の記事 ウォン称賛56 ビュー1981

おすすめ

転載: blog.csdn.net/qq_43624033/article/details/103616754