队列底层实现
package demo2;
public class MyQueue {
//初始化一个数组
int[] elements;
public MyQueue(){
elements = new int[0];
}
//入队
public void add(int element){
//创建一个新的数组
int[] newArr = new int[elements.length + 1];
//将原数组元素复制进新数组
for(int i = 0;i < elements.length;i++){
newArr[i] = elements[i];
}
//在新数组末尾添加新元素
newArr[elements.length] = element;
//将新数组赋值给原数组
elements = newArr;
}
//出队
public int poll(){
//每次取出数组的第一个元素
int element = elements[0];
//创建一个新数组用于保存剩下的队列元素
//原数组首个元素已经被取出,所以新数组长度应该是原数组length - 1
int[] newArr = new int[elements.length - 1];
for(int i = 0; i < newArr.length; i++){
//elements存入行数组的元素下标相差1
newArr[i] = elements[i + 1];
}
//数组替换
elements = newArr;
return element;
}
//判断队列是否为空
public boolean isEmpty(){
return elements.length == 0;
}
}
队列的测试类
package demo2.test;
import demo2.MyQueue;
public class TestMyQueue {
public static void main(String[] args) {
MyQueue ms = new MyQueue();
//进队
ms.add(99);
ms.add(98);
ms.add(97);
ms.add(96);
//出队
System.out.println(ms.poll());
System.out.println(ms.poll());
System.out.println(ms.poll());
}
}
运行结果:
99
98
*97 *