2011-02-03 12 views
1

私は、Javaを使用して制限付き出力を持つ両端キューを作成する方法を理解しようとしていたので、両端から要素を入力できますが、ただ1つから要素を削除できます。 私は単一のキューを実行しました。これはデキューを初めて実行したときに、私が読んでいる本はあまり役に立ちません。出力制限付きダブルエンドキューをJavaで起動する方法は?

私は少し失われており、ダブルはシングルよりも複雑です。

EDIT

シングルキューコード:

public class ListQueue<AnyType> implements Queue<AnyType> 
{ 
    private ListNode<AnyType> front; 
    private ListNode<AnyType> back; 
    private int counter; 

    public ListQueue() 
    { 
     front = back = null; 
    } 

    public boolean isEmpty() 
    { 
     return front == null; 
    } 

    public void enqueue(AnyType x) 
    { 
     if(isEmpty()) // Make queue of one element 
      back = front = new ListNode<AnyType>(x); 
     else    // Regular case 
      back = back.next = new ListNode<AnyType>(x); 
     counter++; 
    } 

    public AnyType dequeue() 
    { 
     if(isEmpty()) 
      throw new UnderflowException("ListQueue dequeue"); 

     AnyType returnValue = front.element; 
     front = front.next; 
     counter--; 
     return returnValue; 
    } 

    public AnyType getFront() 
    { 
     if(isEmpty()) 
      throw new UnderflowException("ListQueue getFront"); 
     return front.element; 
    } 

    public void makeEmpty() 
    { 
     front = null; 
     back = null; 
     counter = 0; 
    } 
} 

あり、それはここで

EDIT

あるListNodeクラスは

です
class ListNode<AnyType> 
{ 

    public ListNode(AnyType theElement) 
    { 
     this(theElement, null); 
    } 

    public ListNode(AnyType theElement, ListNode<AnyType> n) 
    { 
     element = theElement; 
     next = n; 
    } 

    public AnyType element; 
    public ListNode<AnyType> next; 
} 
+0

この宿題はありますか? 'Deque'のような既存のJava型を使えますか? –

+0

OPのそれは、目標がカスタムデータ構造を書いているように聞こえる - 「私は単一のキューを実行した」 –

+0

まあ、それはHWですが、デキューする必要はありません。 – randomizertech

答えて

1

ダブルエンドキューでは、次の要素と前の要素の2つの参照を保持します。

シングルエンドキューから開始し、後方参照を追加します。

+0

私は4つのリファレンスを持っていますか?それは私が得ないものです – randomizertech

+0

各ノードは2つの参照を持っています.1つは前のものに、もう一つは次のものです。単一リンクリストにN個のリンクがある場合、二重リンクリストには2N個のリンクがあります –

+0

どうすればよいですか? これは私が持っているものです:private ListNode front; プライベートListNode 戻る; – randomizertech

関連する問題