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