循环队列的实现

来源:互联网 发布:知我药妆有假货吗 编辑:程序博客网 时间:2024/06/06 01:41
<span style="font-size:18px;">#include<stdio.h>#define MaxQueueSize 15typedef int DataType;typedef struct{DataType queue[MaxQueueSize];int rear;//队列指针int front;//对头指针int count;//计数器}SeqCQueue;//初始化void QueueInitiate(SeqCQueue *q){//初始化顺序循环队列qq->count=0;//定义初始计数器q->rear=0;//定义初始队尾指针下标q->front=0;//定义初始对头指针标}//非空int QueueNotEmpty(SeqCQueue q){//判断顺序循环队列q非空否,非空则返回1,否则返回0if(q.count!=0){return 1;}else{return 0;}}//入队列int QueueAppend(SeqCQueue *q,DataType x){//把数据元素值x插入顺序循环队列q的队尾,成功则返回1,失败返回0if(q->count>0&&q->rear==q->front){//队满判断printf("队列已满无法插入!!\n");return 0;}else{q->queue[q->rear]=x;//数据元素x插入队尾q->rear=(q->rear+1)%MaxQueueSize;//队尾指示器加1q->count++;//计数器加1return 1;//返回1}}//出队列int QueueDelete(SeqCQueue *q,DataType *d){//删除顺序循环队列q的队头元素并赋给d,成功返回1,失败则返回0if(q->count==0){//对空判断printf("队列已空无数据元素出队列!!\n");return 0;}else{*d=q->queue[q->front];//取对头元素存入d中q->front=(q->front+1)%MaxQueueSize;//对头指示器加1q->count--;//计算器减一}}//取对头数据元素int QueueGet(SeqCQueue q,DataType *d){//取顺序循环队列q的当前对头元素并赋给d,成功则返回1,失败则返回0if(q.count==0){printf("队列已空,无数据元素可以取!!\n");return 0;}else{*d=q.queue[q.front];return 1;}}void main(){}</span>

1 0