特点:表尾插入,表头删除
先进先出
存储结构:顺序队或栈队,以循环顺序队列
更常见
在使用有限资源的时候,通常会使用到队列。
顺序表:一个数组(空间最大限Maxsize)、一个length长度(实际使用空间)
队列:一个数组、两整数(一个表示队头元素的下标,一个表示队尾元素的下标)
入队
首先判断队列是否已满?
出队
判断队列是否已空?
若用户无法估计所用队列的长度,则宜采用链队列
链队
front代表头指针,指向头结点
rear代表尾指针,指向尾结点
链表:LNode
栈链:SNode
队链:QNode
1)顺序队的四要素(初始时front=rear=-1)
队空条件:front=rear
队满条件:rear=MaxSize-1
元素e进队:rear++;data[rear]=e;
元素e出队:front++;e=data[front];
环形队列的四要素:
队空条件:front==rear
队满条件:(rear+1)%MaxSize=front
进队e操作:rear=(rear+1)%MaxSize; 将e放在rear处
出队操作:front=(front+1)%MaxSize;取出front处元素e;
链队的4要素:
队空条件:front=rear=NULL
队满条件:不考虑
进队e操作:将包含e的节点插入到单链表表尾
出队操作:删除单链表首数据节点