package LinkedListQueue;//队列publicinterfaceQueue<E>{intgetSize();booleanisEmpty();voidenqueue(E e);//向队列中添加元素
E dequeue();//向队列中取出元素(出队)
E getFront();//查看队首的元素}
LinkedListQueue实现类
package LinkedListQueue;/**
* 带有尾节点的列表 实现队列
*
* @param <E>
*/publicclassLinkedListQueue<E>implementsQueue<E>{privateclassNode{public E e;public Node next;// 用户传来e 和 nextpublicNode(E e, Node next){this.e = e;this.next = next;}// 用户传来只传来epublicNode(E e){this(e, null);}// 用户没有传任何参数publicNode(){this(null, null);}@Overridepublic String toString(){return e.toString();}}private Node head, tail;privateint size;publicLinkedListQueue(){
head = null;
tail = null;
size =0;}@OverridepublicintgetSize(){return size;}@OverridepublicbooleanisEmpty(){return size ==0;}// 入队操作@Overridepublicvoidenqueue(E e){if(tail == null){
tail =newNode(e);
head = tail;}else{
tail.next =newNode(e);
tail = tail.next;}
size++;}// 出队操作@Overridepublic E dequeue(){if(isEmpty()){thrownewIllegalArgumentException("Cannot dequeue from an empty queue");}
Node retNode =newNode();
head = head.next;
retNode.next = null;if(head == null){
tail = null;}
size--;return retNode.e;}@Overridepublic E getFront(){if(isEmpty()){thrownewIllegalArgumentException("Cannot dequeue from an empty queue");}return head.e;}@Overridepublic String toString(){
StringBuffer res =newStringBuffer();
res.append("Queue: front ");
Node cur = head;while(cur != null){
res.append(cur +"->");
cur = cur.next;}
res.append("NULL tail ");return res.toString();}publicstaticvoidmain(String[] args){
LinkedListQueue<Integer> queue =newLinkedListQueue<Integer>();for(int i =0; i <10; i++){
queue.enqueue(i);
System.out.println(queue);//每入队列三个取出一个if(i %3==2){
queue.dequeue();
System.out.println(queue);}}}}