首页 > 代码库 > 循环队列的实现

循环队列的实现

<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>

循环队列的实现