队列
![https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/queue.png](https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/queue.png)
https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/queue.png
定义
先进先出,特殊的线性表,队头出队尾进
一个个执行的地方都需要用,鼠标点击、cpu处理进程、秒杀活动、键盘打字等等
操作
入队(队尾)、出队(队头)
顺序实现
用数组申明一个空间,然后一个个的存入数据元素
- 问题1: 0下标的位置是队头,如果出对,后面的元素都要向前挪一位,保持数组中的元素都是从0开始的
- 问题2: 也可以不向前挪,直接出队,队头的位置下标变为1,这样可能会造成“假溢出”
- 最好的解决办法: 头指针front,尾指针(rear),加上循环队列(还是那个数组,rear指到最后的时候,可以跳转至0位置),如果是固定长度适合。
循环队列
队列满的条件:(rear+1) % QueueSize == front
队列长度:(rear-front+QueueSize) % QueueSize