队列(先进先出)
队列就跟排队一样
具体实现
具体方法:
1. 入队(新数组在旧数组的基础上加元素然后替换旧数组)
2. 出队(需要取出第一个并且返回 其余的错位传给新数据 用新数组替换旧数组即可)
3. 判空(判断数组长度是否为空)
实现方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| 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];
//新建数组 int[] newArr=new int[elements.length-1]; //旧数组除了第一个数存到新的数组 for(int i=0;i<newArr.length;i++){ newArr[i]=elements[i+1]; //从第二个开始错位传给新的参数 } //替换数组 elements=newArr; //返回队列第一个元素 return element; }
//判断栈是否为空(只需要返回布尔值是不是为空) public boolean isEmpty(){ return elements.length==0; }
}
|
测试Test类
1 2 3 4 5 6 7 8 9 10 11 12
| public class Test { public static void main(String[] args){ //创建一个队列 MyQueue m=new MyQueue(); m.add(9); m.add(8); m.add(7); // 从前往后: 9 8 7
System.out.println(m.poll()); //第一个为9 System.out.println(m.poll()); //第二个为8 因为9已经被踢出去了 } }
|
具体结果:
数组模拟队列
思路
1. 阿斯达请问
2. 阿斯达阿斯达
代码实现
类