java 队列简单了解
程序员文章站
2022-03-14 15:05:21
...
这有点像坐公交车,大家按先后顺序一次排好队,后面来的人入队enqueue,也就排到最后面了后面陆续有人来,都是站到队列的最后一个,排第一个的肯定是第一个上车的,然后每次都是站最前面的上车
package ce;
import java.util.ArrayList;
import java.util.List;
public class MyQueue {
private List<Integer> pQueue;
private int pStart;
public MyQueue() {
pStart = 0; //从下标0开始放
pQueue = new ArrayList<Integer>(); //创建一个集合
}
public boolean enQueue(int x) { //入队
pQueue.add(x);
return true;
};
public boolean deQueue() { //出队,这边
if (!isNotEmpty()) {
return false;
}
pStart++; //增涨下标
return true;
}
public int num() { //取对应位置的数据
return pQueue.get(pStart);
}
public boolean isNotEmpty() { //判断队列是否为空
return pStart < pQueue.size();
}
public int size() { //大小
return pQueue.size();
}
}
package ce;
public class Main {
public static void main(String[] args) {
MyQueue q = new MyQueue();
q.enQueue(5);
q.enQueue(3);
q.enQueue(6);
q.enQueue(7);
for (int i = 0; i < q.size(); i++) {
if (q.isNotEmpty()) {
System.out.println(q.num());
}
q.deQueue();
}
}
}
可以看到是按顺序执行的
这是比较低效硬刚的队列实现,
正常在设计队列时,都是先把空间开辟出来,然后采用两个指针来标识头部和尾部
在一个普通队列里,假如你开辟的这个队列空间为100个,全部装满了,你从最前面拿走了一个,你重新往第100位置放的时候发现放不进去,因为100这个位置还被原来的那个人占着,它并不会因为你前面的那个人走了,它就去调整座位,所以出现两个指针来标识位置,反正我们空间是100座位,座位固定住,那我们变动座位编号就好,原来1号座位空了,我就把1号变成100,原来的2号变成了新的1号,然后他们往100这个位置放就ok了吧
上一篇: 他不是任
下一篇: 手写单向队列性能秒杀std::queue