队列
程序员文章站
2022-07-09 13:49:03
...
队列【先进先出】只允许在一段进行插入数据操作,在另一端进行删除数据操作的特殊线性表。
进行插入的一端称为队尾(入队列),进行删除操作的一端称为对头(出队列)
栈保证后进先出,模拟递归;队列保证的是公平性,链式结构更适合队列。
package DataStruct;
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(){
//那数组中第0个元素取出来
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;
}
}
测试队列
package DataStruct;
import DataStruct.MyQueue;
public class TestMyQueue {
public static void main(String[] args) {
//创建一个队列
MyQueue mq=new MyQueue();
//入队列
mq.add(5);
mq.add(4);
mq.add(3);
mq.add(2);
//出队列
System.out.println(mq.poll());
System.out.println(mq.poll());
mq.add(6);
//并不会影响出队列顺序
System.out.println(mq.poll());
System.out.println(mq.poll());
System.out.println(mq.poll());
System.out.println(mq.isEmpty());
// 输出结果:
// 5
// 4
// 3
// 2
// 6
// true
}
}
上一篇: python代码实现凯撒加解密
下一篇: 队列