队列的数据结构定义及算法

来源:互联网 发布:淘宝网店货源怎么找 编辑:程序博客网 时间:2024/04/30 04:02

顺序队列的定义

typedef struct{int data[maxSIZE];int front, rear;}SqQueue;

循环队列的操作

(1)两状态
队列为空:qu.rear == qu.front
队列为满:(qu.rear+1)%maxSIZE == qu.front

(2)两操作
元素X进队
qu.rear=(qu.rear+1)%maxSIZE;
qu.data[qu.rear] = x;
元素X出队
qu.front = (qu.front+1)%maxSIZE;
x = qu.data[qu.front];

初始化队列

void initQueue(SqQueue &qu){qu.front = qu.rear = 0;}

判队列为空

int QueueEmpty(SqQueue qu){if(qu.front == qu.rear)return 1;elsereturn 0;}

元素进队

int enQueue(SqQueue &qu, int x){if((qu.rear+1)%maxSIZE == qu.front)return 0;elsequ.rear=(qu.rear+1)%maxSIZE;qu.data[qu.rear] = x;return 1;}

元素出队

int exQueue(SqQueue &qu, int x){if(qu.front == qu.rear)return 0;elsequ.front = (qu.front+1)%maxSIZE;x = qu.data[qu.front];return 1;}