<span style="font-size:18px;">#include<stdio.h>
#define MaxQueueSize 15
typedef int DataType;
typedef struct{
DataType queue[MaxQueueSize];
int rear;//队列指针
int front;//对头指针
int count;//计数器
}SeqCQueue;
//初始化
void QueueInitiate(SeqCQueue *q){//初始化顺序循环队列q
q->count=0;//定义初始计数器
q->rear=0;//定义初始队尾指针下标
q->front=0;//定义初始对头指针标
}
//非空
int QueueNotEmpty(SeqCQueue q){
//判断顺序循环队列q非空否,非空则返回1,否则返回0
if(q.count!=0){
return 1;
}else{
return 0;
}
}
//入队列
int QueueAppend(SeqCQueue *q,DataType x){
//把数据元素值x插入顺序循环队列q的队尾,成功则返回1,失败返回0
if(q->count>0&&q->rear==q->front){//队满判断
printf("队列已满无法插入!!\n");
return 0;
}else{
q->queue[q->rear]=x;//数据元素x插入队尾
q->rear=(q->rear+1)%MaxQueueSize;//队尾指示器加1
q->count++;//计数器加1
return 1;//返回1
}
}
//出队列
int QueueDelete(SeqCQueue *q,DataType *d){
//删除顺序循环队列q的队头元素并赋给d,成功返回1,失败则返回0
if(q->count==0){//对空判断
printf("队列已空无数据元素出队列!!\n");
return 0;
}else{
*d=q->queue[q->front];//取对头元素存入d中
q->front=(q->front+1)%MaxQueueSize;//对头指示器加1
q->count--;//计算器减一
}
}
//取对头数据元素
int QueueGet(SeqCQueue q,DataType *d){
//取顺序循环队列q的当前对头元素并赋给d,成功则返回1,失败则返回0
if(q.count==0){
printf("队列已空,无数据元素可以取!!\n");
return 0;
}else{
*d=q.queue[q.front];
return 1;
}
}
void main(){
}</span>原文地址:http://blog.csdn.net/j903829182/article/details/37963957