队列

1、队列是一种先进者先出的数据结构
2、用数组实现的栈叫作顺序队列,用链表实现的栈叫作链式队列
3、队列需要两个指针:一个是 head 指针,指向队头;一个是 tail 指针,指向队尾(对于栈来说,我们只需要一个栈顶指针就可以了)。往队列里面取数据head指针往后移,从队列里面添加数据tail指针往后移。
4、当 tail 移动到最右边,即使数组中还有空闲空间,也无法继续往队列中添加数据了。这种情况,一般是出队时可以不搬移数据,而是在入队时,再集中触发一次数据的搬移操作;同时也可以用循环队列来解决,直到队列没有空闲空间
5、队列还有阻塞队列(队列为空时,从队头取数据会被阻塞;队列满时,往队尾添加数据会被阻塞)和并发队列(同一时刻仅允许一个存或者取操作的线程安全的队列)两种形式
6、写出没有bug的队列代码主要是确定好队空和队满的判定条件;非循环和循环队列,队列为空的判断条件都是 head == tail;非循环队列,队满的判断条件为tail == n;循环队列,队满的判断条件为(tail+1)%n=head

原文地址:https://www.cnblogs.com/jetqiu/p/13358138.html