对列
队列的顺序结构存储
下标移动
1 |
|
队列的初始化
1 | Status InitQueue(SqQueue &Q){ |
求队列的长度
1 | int QueueLength(SqQueue Q){ |
顺序对列入队
1 | Status EnQueue(SqQueue &Q,QElemType e){ |
出队
1 | Status DeQueue (SqQueue &Q,QElemType &e){ |
去队头元素
1 | SElemType GetHead(SqQueue Q){ |
链队
链队的结构
1 | typedef struct QNode{ |
初始化
1 | Status InitQueue(LinkQueue &Q){ |
入队
1 | Status EnQueue(LinkQueue &Q,QElemType e){ |
出队
需考虑最后元素被删后队尾指针会不会丢失
1 | Status DeQueue(LinkQueue &Q,QElemType &e){ |
取队头元素
1 | SElemType GetHead(LinkQueue Q){ |
循环对列
解决假溢出,用于循环对列:Q.rear=(Q.rear+1)%MAXQSIZE;
判断队满与队空:
方法一:少用一个元素空间
队空的条件:Q.front==Q.rear
队满的条件:(Q.rear+1)%MAXQSIZE==Q.front
方法二:设置一个标志
数组Q[]存放元素,设置标志tag==0,tag==1来区别
初始化
1 | SeQueue QueueInit(SeQueue Q){ |
入队
1 | SeQueue QueueIn(SeQueue Q,int e){ |
出队
1 | ElemType QueueOut(SeQueue Q){ |