队列是一种特殊的,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列的特性:先进先出;
以下代码是用链表实现的队列:
1.队列的接口
1 public interface IQueue{ 2 //入队操作 3 void enQueue(T e); 4 //出队操作 5 T deQueue(); 6 //返回队列的大小 7 int getSize(); 8 //判断队列是否为空 9 boolean isEmpty();10 //查看队首元素11 T peek();12 }
2.队列类
1 import java.util.EmptyStackException; 2 import java.util.LinkedList; 3 4 public class MyQueueextends LinkedList implements IQueue { 5 6 @Override 7 public void enQueue(T e) { 8 super.add(e); 9 10 }11 12 @Override13 public T deQueue() {14 if(getSize()<=0) throw new EmptyStackException();15 T value=super.getFirst();16 super.removeFirst();17 return value;18 }19 20 @Override21 public boolean isEmpty() {22 return getSize()>0;23 }24 25 @Override26 public T peek() {27 if(getSize()<=0) throw new EmptyStackException();28 T value=super.getFirst();29 return value;30 }31 32 @Override33 public int getSize() {34 return super.size();35 }36 37 }