Как запустить выходную ограниченную двустороннюю очередь в Java? - PullRequest
1 голос
/ 03 февраля 2011

Я пытался понять, как начать писать двустороннюю очередь с ограниченным выводом, используя 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;
}

1 Ответ

1 голос
/ 03 февраля 2011

В двусторонней очереди вы сохраняете две ссылки: одну на следующий элемент и одну на предыдущий.

Начните с односторонней очереди и добавьте обратные ссылки.

...