/** Implementa una Queue usando una DLL. */ public class DLLQueue implements Queue { private DLLNode head, tail; // Nodi fittizi di testa/cdoa /** Crea una coda vuota. */ public DLLQueue() { head = new DLLNode( null ); tail = new DLLNode( null ); tail.insertAfter( head ); } /* --- METODI DI Queue --- */ public void enqueue( Object o ) { DLLNode node = new DLLNode( o ); node.insertBefore( tail ); } public Object dequeue() { if ( isEmpty() ) return null; DLLNode node = head.getNext(); node.remove(); return node.getContent(); } public boolean isEmpty() { return ( head.getNext().getNext() == null ); } /** Main di test. Inserisce gli argomenti in coda e li rimuove stampandoli. */ static public void main( String arg[] ) { Queue q = new DLLQueue(); for ( int i = 0; i < arg.length; i++ ) q.enqueue( arg[i] ); while (! ( q.isEmpty() ) ) System.out.println( q.dequeue() ); } }