数据结构之队列
文章来源: http://blog.seclibs.com/数据结构之队列/ 上一篇文章说了一种“功能受限”的顺序表——栈,现在再来说一个 “功能受限”的顺序表 —— 队列 (queue)。 队列也是一个常用的数据结构,在大部分资源有限的情况下,当没有空闲资源的时候,基本上都是使用队列这种数据结构来实现请求排队的。 队列,顾名思义,就是排的一条队,比如在买票的时候排的一条队伍,先来的先买,后来的后买,不允许插队,也就是先进先出的方式,栈是后进先出的方式。 栈支持入栈(push)和出栈(pop)两种操作,队列也是类似的,支持入队(enqueue)和出队(dequeue)两种操作,入队就是在尾部追加一个数据,出队就是在头部取走一个数据。 队列作为一种非常基础的数据结构,应用是非常广泛的,特别是一些具有某些额外特性的队列,比如循环队列、阻塞队列、并发队列。它们在很多偏底层系统、框架、中间件的开发中,起着关键性的作用。 队列在实现上跟栈也是类似的,可以使用数组或链表来进行实现,使用数组实现的叫做顺序队列,使用链表实现的叫做链式队列。但是栈只需要一个栈顶指针top就可以了,队列则需要头部head指针和尾部tail指针两个来标识。 比如说a、b、c、d四个数据入队以后,head指针将指向下标为0的位置,tail指针指向下标为4的位置 当进行两次出队的操作后,head指针将指向下标为2的位置