特点:先进先出
英文:Queue
应用场景举例
银行排队:四个业务员,为排队的人的服务,每有一个业务员服务完成后,这时下一位被服务者从下面的队列中产生。队列介绍
队列是一个有序列表,可以用数组和链表实现。数组顺序存储,链表链式存储。
遵循先入先出的原则,即先存入队列的数据,要先取出,后存入的要后取出。
用数组模拟示意图:rear代表尾部,front代表队首,MaxSize代表数组的最大容量,当数据加入的时候,队首不变,队尾增加,数据出去的时候,队首指针增加。
将尾指针往后移rear+1,当front==rear的时候,队列为空。
若为指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指数组元素中,否则无法存入数据。当rear==maxSize-1,队列满。
front在队首前一个位置,rear除非队为空,正常队列(循环情况暂时不考虑),rear总是在队的最后一个元素。
实现代码
数组模拟队列基本功能
上述代码有缺陷,就是当队列不断出栈为空时,那么再往里面添加元素,不能再添加,因为front和rear都已经是数组最大位置。数组只能用一次,原因是数组没有取模,做成环形队列。