c语言循环队列的基本 *** 作

c语言循环队列的基本 *** 作,第1张

该程序包含了置空,判断是否为空,入队,出队,取对头元素等几个基本 *** 作;

#include 
#include     //malooc需要的头文件; 
#define size 100
typedef struct
{
	int data[size];
	int rear;
	int front;
	int count;
}cirqueue;
cirqueue *q;

void initqueue()   //置队空; 
{
	q=(cirqueue *)malloc(sizeof(cirqueue));     //在局外定义一个全局变量的指针,然后给他分配空间,就可以全局使用了; 
	q->front=q->rear=0;   //对头和队尾下表为0; 
	q->count=0;     //元素为空; 
}

int queueempty()   //判断队是否为空; 
{
	return q->count==0;
} 

int queuefull()
{
	return q->count==size;
}

int enquque(int x)    //入队 
{
	if(queuefull())
	{
		puts("队满");return 0;
	}
	q->data[q->rear]=x;
	q->rear=(q->rear+1)%size;    //循环队列的主要因素 
	q->count++;     //记得每次入队要加1 
	return 1;
}

int queuefront(int *z)   //取对头元素;此处z为指针是为了能够传递出去; 
{
	if(queueempty())
	{
		puts("队空");return 0; 
	}
	*z=q->data[q->front];
	return 1;
}

int dequque(int *y)    //出队 
{
	if(queueempty())
	{
		puts("队空");return 0; 
	}
	*y=q->data[q->front];
	q->front=(q->front+1)%size;    //循环队列的主要因素 
	q->count--;    //记得每次入队要减1 
	return 1;
}

void main()
{
	int x=3,y,z;
	initqueue();
	printf("是否为空:%d\n",queueempty());
	printf("是否为满:%d\n",queuefull());
	printf("入队是否成功:%d\n",enquque(x));
	printf("取队头是否成功:%d\n",queuefront(&z));
	printf("对头元素为:%d\n",z);
	printf("出队是否成功:%d\n",dequque(&y));
	printf("出队元素为:%d\n",y);
}

各位兄弟,如果这篇文章对你有那么一点点的帮助的话,就给我一点鼓励点个赞吧,兄弟我在这里谢谢大家啦!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/564128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-03
下一篇 2022-04-03

发表评论

登录后才能评论

评论列表(0条)

保存