队列的两种实现方式—顺序队列、链式队列
基本操作:
(1)初始化队列 InitQueue(Q)
(2)入队 EnQueue(Q,item)
(3)出队 DeQueue(Q,item)
(4)获取队头元素内容 GetHead(Q,item)
(5)判断队列是否为空 QueueEmpty(Q)
实现算法—存储结构
1、顺序存储结构实现队列
队头,队尾指针。front存储队头元素所在下标,当出队时,front++,而rear存储队尾元素的下一个元素的下标,即可以直接入队的下标sq[rear]=e;入队后,rear++;此时会出现假溢出的情况===》顺序循环队列(不能扩容)
if(rear==SIZE-1)//对front的控制同rear
rear=0;
else rear ++;
或rear++;if(rear==SIZE)rear=0;
解决队列算法中的两种特殊情况(队空、队满)
队空:length== 0
队满:length==SIZE;
typedef struct {
QElemType sq[50];
//QElemType *elem;
int front//队头元素所在下标
int rear//队尾元素的下一个位置的下标,可以直接入队的位置下标
int length;