概述
具体应用
顺序实现
溢出问题
解决方案
队列状态判断
具体实现
定义
初始化
求队长
入队
出队
取队头
代码整合
//循环队列的实现
#define maxsize 100;
//类型定义
typedef struct{
int *data;//存储数据的空间
int head;//队头
int rear;//队尾
}squeue;
squeue q;//定义顺序队
//初始化
int init(squeue &q){
q.data=new int[maxsize];//开辟数组空间
if(!q.data) return 0;//状态判断:data为空,内存分配失败!!!!
q.rear=q.head=0;//初始队头与队尾
return 1;
}
//求队长
int len(squeue q){
return (q.rear-q.head+maxsize)%maxsize;
}
//入队
int enqueue(squeue &q,int e){
//非法处理
if((q.rear+1)%maxsize==q.head) return 0;
//入队:队尾入队
q.data[q.rear]=e;
//更新
q.rear=(q.rear+1)%maxsize;
return 1;
}
//出队
int dequeue(squeue &q){
//非法处理
if(q.rear==q.head) return 0;
//出队:队头出队
int e=q.data[q.head];
//更新
q.head=(q.head+1)%maxsize;
return e;
}
//取队头元素
int getHead(squeue q){
if(q.head==q.rear) return 0;//未插入元素
else return q.data[q.head];
}