一.循环队列抽象类型定义
二.循环队列的基本运算
1.循环队列的抽象类型定义
const int maxsize = 100;
#define ERROR 0
#define OK 1
#define NULLQUE 1
typedef int ElemType;
typedef struct {
ElemType data[maxsize]; //用于存放数据的队列数组
int front, rear; //队头 队尾
} CycQue;
2.循环队列初始化
void InitCycQue(CycQue Q) {
Q.front = 0;
Q.rear = 0;
}
3.循环队列判空
int EmptyQue(CycQue Q) {
if (Q.front == Q.rear)//队头=队尾 => 空队列
return NULLQUE;
else
return 0;
}
4.入队
/*
* 入队运算:
* 1.判队满:判断队尾+1取模最大长度是否与队头相等大于的情况是不可能出现的,若相等即为队列满载
* 2.执行入队 *** 作
*/
int EnterQue(CycQue Q, ElemType edata) {
if ((Q.rear + 1) % maxsize == Q.front)//判队满
return ERROR;
else {
Q.rear = (Q.rear + 1) % maxsize;
Q.data[Q.rear] = edata;
return OK;
}
}
5.出队
int OutQue(CycQue Q){
if(EmptyQue(Q))
return ERROR;
else{
Q.front = (Q.rear + 1) % maxsize;
return OK;
}
}
6.取队头元素
ElemType GetHead(CycQue Q) {
if (EmptyQue(Q))
return NULLDATA;
else {
return Q.data[(Q.rear + 1 % maxsize)];
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)