队列学习重点整理:
1、什么是队列?先进先出即为队列。
2、用数组和链表分别实现队列。
3、当队列进行若干次入队出队操作后,数据都会集中在后部,导致前面即使有空间也不能插入元素,所以一个解决方法就是进行数据搬移,即:判断当队列中不能插入元素且队列还不满时,将队列中的元素搬移至最前面的位置,重新更新队头、队尾的指针即可。
4、循环队列的实现:重点是在循环队列中如何判断已满,若head表示头指针,tail表示尾指针,则队列满的条件是(tail+1)%n == head,其中n是队列的容量。
5、阻塞队列:当队列为空时,就不能再出队了,当队列为满时,就不能再入队了,即为阻塞,对应一个生产者-消费者模型。
6、并发队列:多线程的情况下,会有多个线程同时操作队列,这个时候就会存在线程安全问题,线程安全的队列就叫做并发队列。简单的实现方式是在入队出队的基础上加锁,锁的粒度大并发度会比较低,同一时刻仅允许一个存或取操作。