队列介绍
队列与栈相似,是一种受限制的线性表,队列的特点是先进先出,在尾部进行插入,在头部进行弹出。类似与平时的排队,先到先得。
队列分类
顺序队列与链式队列
顺序队列与链式队列是队列分别以数组和链表形式实现的表现形式,当以数组实现队列的时候,会出现头部后移的情况,为解决这类问题,就需要循环队列。
循环队列
循环队列就是将数组的头尾相连,形成一个环形的队列,此时头部后移也不会影响,但循环队列的代码难度较高,很容易出bug,需要确定好队空和队满的判断条件,所以要写一个完美的循环队列代码没那么容易。
阻塞队列
阻塞队列就是在队满而要插入和队空而要提取的时候,进行阻塞,等待有数据变化的时候再进行操作,日常程序中会有这种操作,譬如说在打开网页的时候,需要等待网络连接等。类似于生产者消费者模式。
并发队列
线程安全的队列称为并发队列,最简单直接的方法就是在队列的enqueue()和dequeue()中添加锁机制。但更有效的方法是使用CAS原子操作,这样可以实现非常高效的并发队列。