队列:队列(Queue)是一种先进先出的、只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的一段称为队尾,允许删除的一端称为队头。
//自己动手实现队列
public class MyQueue {
//队列的抽象模型也是数组
int []arr;
//构造方法
public MyQueue() {
arr=new int[0];
}
//入队,新建一个长度加一的数组,将新元素插入到数组尾
public void enQueue(int dst) {
int[]NewArr=new int[arr.length+1];
for (int i = 0; i < arr.length; i++) {
NewArr[i]=arr[i];
}
NewArr[arr.length]=dst;
arr=NewArr;
}
//出队,新建一个长度减一的数组,将第0个元素取出,后面依次赋值给新数组
public int deQueue() {
if(arr.length==0)throw new RuntimeException("Queue Is Empty!");
int element=arr[0];
int []NewArr=new int[arr.length-1];
for (int i = 0; i < NewArr.length; i++) {
NewArr[i]=arr[i+1];
}
arr=NewArr;
return element;
}
//查看队头元素
public int topElement() {
return arr[0];
}
//判断是否空队列
public boolean isEmpty() {
return arr.length==0;
}
}
public class testQueue {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyQueue mq = new MyQueue();
//入队
mq.enQueue(9);
mq.enQueue(8);
mq.enQueue(7);
//出队
int top=mq.deQueue();
//输出9
System.out.println(top);
//取出队头元素8
int element = mq.topElement();
System.out.println(element);
//判断是否为空队列
boolean b = mq.isEmpty();
System.out.println(b);
}
}