数组实现队列的基本操作
队列也是一种线性结构,也可以利用数组来实现。
队列 的特点:
先进队列的元素先出队列,最后进入队列的元素最后出去。就像我们生活中的排队买票一样。
package com.xingyun.stack;
import java.util.Arrays;
public class MyQueue {
int[] arr;
/*
* 队列的基本操作,
* 队列:先进先出
* */
public MyQueue() {
arr=new int[0];
}
//进队操作
public void add(int item) {
//创建一个新的数组,长度是原数组的长度+1
int[] arry=new int[arr.length+1];
//利用循环将原数组中的值存入新数组
for(int i=0;i<arr.length;i++) {
arry[i]=arr[i];
}
arry[arr.length]=item;
arr=arry;
}
//出队操作,每一次取出队首元素之后,数据规模减一,每一次删除的 元素都是数组中的 第一个元素
public int poll() {
int elements=0;
//判断当前给定下标是否属于数组下标范围之内
if(arr.length==0) {
System.out.println("当前队列没有元素值,无法进行取出操作");
}else {
elements=arr[0];
int[] arry=new int[arr.length-1];
for(int i=0;i<arry.length;i++) {
arry[i]=arr[i+1];
}
arr=arry;
}
return elements;
}
//查看队首元素
public int peek() {
return arr[0];
}
//查看队列是否为空
public boolean isEmpty() {
return arr.length==0;
}
public static void main(String[] args) {
MyQueue mq=new MyQueue();
//数据入队
mq.add(5);
mq.add(8);
mq.add(4);
mq.add(1);
//查看队首元素
System.out.println("队首元素为:"+mq.peek());
mq.add(2);
//查看队首元素
System.out.println("入队元素后再查看队首元素为:"+mq.peek());
System.out.println("队列状态为:"+Arrays.toString(mq.arr));
//出队
mq.poll();
mq.poll();
mq.poll();
mq.poll();
mq.poll();
mq.poll();
System.out.println("队列是否为空:"+mq.isEmpty());
}
}