package queue.sequencequeue; /** * 队列的定义:队列是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表 * 队列是一种先进先出(First In First Out)的线性表,简称FIFO,允许插 * 入的一端称为队尾,允许删除的一端称为队头 * @author wl * */ public class SequenceQueue { private Object[] elementData;//用数组来保存队列的元素 private int front;//队列的头指针 private int rear;//队列的尾指针 //无参构造函数 public SequenceQueue(){ elementData=new Object[10]; front=0; rear=0; } //带参构造函数,指定数组的初始化长度 public SequenceQueue(int capacity){ elementData=new Object[capacity]; front=0; rear=0; } //队列的大小 public int size(){ return rear-front; } //判断队列是否为空 public boolean isEmpty(){ int size=size(); return size==0; } //判断队列是否已满 public boolean isFull(){ int size=size(); return size==elementData.length; } //入队列 public void enQueue(int data){ if(isFull()){ throw new IndexOutOfBoundsException("队列已满"); } elementData[rear++]=data; } //出队列 public Object deQueue(){ if(isEmpty()){ throw new IndexOutOfBoundsException("队列为空"); } //得到对头元素 Object data=elementData[front]; //释放对头元素 elementData[front++]=null; return data; } //得到对头元素,不删除 public Object getFront(){ if(isEmpty()){ return null; }else{ return elementData[front]; } } //打印队列中的元素 public void traverse(){ if(isEmpty()){ System.out.println("null"); }else{ for(int i=front;i<rear;i++){ System.out.print(elementData[i]+" "); } } System.out.println(); } }
时间: 2024-10-09 10:34:23