栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言循环队列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言循环队列

循环队列是由数组来实现的,也是先进先出的规则。通过头脚标和尾脚标来实现对数据的删除和插入。在循环时为了区分队列是队满还是队空,我这里采用的是浪费一个空间使得尾脚标永远追不上头脚标指向的值,当尾脚标与头脚标中间只差一个空间判断为满,当头脚标追上头脚标的时队空。

代码实现,具体理解请跟着代码画图。

#include 
#include 
#define Max 5

typedef struct CircleIntQueue{
	int data[Max];
	int front;
	int rear;	
}*CircleIntQueuePtr;

CircleIntQueuePtr initqueue(){
	CircleIntQueuePtr tempqueue = (CircleIntQueuePtr)malloc(sizeof(CircleIntQueue));
	tempqueue->front = 0;
	tempqueue->rear = 0;
	
	return tempqueue;
}

void enqueue(CircleIntQueuePtr paraPtr, int paraValue){
	if((paraPtr->rear+1)%Max==(paraPtr->front)%Max){
		printf("队已满n");
		return;
	}
	paraPtr->data[(paraPtr->rear)%Max] = paraValue;
	paraPtr->rear ++;
}

int dequeue(CircleIntQueuePtr paraPtr){
	int resultValue;
	if(paraPtr->front == paraPtr->rear){
		printf("队为空n");
		return -1;
	}
	resultValue = paraPtr->data[paraPtr->front%Max];
	paraPtr->front ++;
	
	return resultValue;
}

void outputLinkQueue(CircleIntQueuePtr paraPtr){
	int i ;
	if(paraPtr->front == paraPtr->rear){
		printf("队为空n");
		return;
	}
	printf("队列中数据为:"); 
	for(i = paraPtr->front;i<=paraPtr->rear-1;i++){
		printf("%d ",paraPtr->data[i%Max]);
	}
	printf("n");
}

void testLinkQueue(){
	int i = 10;
	CircleIntQueuePtr tempPtr = initqueue();
	for (; i < 16; i ++) {
		enqueue(tempPtr, i);
	}

	outputLinkQueue(tempPtr);

	for (i = 0; i < 6; i ++) {
		printf("dequeue gets %drn", dequeue(tempPtr));
	}

	enqueue(tempPtr, 8);
	enqueue(tempPtr, 9);
	outputLinkQueue(tempPtr);
	printf("dequeue gets %drn", dequeue(tempPtr));
	printf("dequeue gets %drn", dequeue(tempPtr));
	printf("dequeue gets %drn", dequeue(tempPtr));
	enqueue(tempPtr, 20);
	enqueue(tempPtr, 20);
	enqueue(tempPtr, 20);
	enqueue(tempPtr, 20);
	enqueue(tempPtr, 20);
	outputLinkQueue(tempPtr);
}

int main(){
	testLinkQueue();
	return 1;
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号