编程实现双端循环队列的出队和入队

#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
typedef struct Loopqueue {
	int date[maxsize];
	int front, rear;//队头,队尾指针
}Loopqueue;
int Initqueue(Loopqueue& q)
{
	q.front = q.rear = maxsize - 1;
	return 1;
}//初始化队列
void Insertqueue(Loopqueue& q)
{
	int x, y;
	printf("\n请输入入队的数据个数:\n");
	scanf_s("%d", &y);
	for (int i = 1; i <= y; i++)
	{
		printf("\n请输入一个入队的整数数据:");
		scanf_s("%d", &x);
		if ((q.rear + 1) % maxsize == q.front)
		{
			printf("\n队满,不能入队!\n");
			return;
		}
		q.rear = (q.rear + 1) % maxsize;
		q.date[q.rear] = x;
	}
	printf("\n入队成功!\n");
}//入队函数

void Outqueue(Loopqueue &q)
{
	if (q.front == q.rear)
	{
		printf("\n队列为空,不能出队");
		return;
	}
	while (q.front != q.rear)
	{
		q.front = (q.front + 1) % maxsize;
		printf("\n出队元素为: %d\n", q.date[q.front]);
	}
	return;
}
void Showqueue(Loopqueue q)
{
	if (q.rear == q.front)
	{
		printf("\n此队列为空!\n");
		return;
	}
	printf("\n此队列元素为:");
	do {
		q.front = (q.front + 1) % maxsize;
		printf("%d ", q.date[q.front]);
	} while (q.rear != q.front);
	printf("\n");
}
int length(Loopqueue q)
{
	int k;
	k = (q.rear - q.front + maxsize) % maxsize;
	return k;
}
int main()
{
	int i = 1;
	int choice;
	Loopqueue q;
	Initqueue(q);
	while (i)
	{
		printf("\n\t\t 循环队列\n");
		printf("\n\t\t**********");
		printf("\n\t\t*1--进队--*");
		printf("\n\t\t*2--出队--*");
		printf("\n\t\t*3--显示--*");
		printf("\n\t\t*4--求队列长度--*");
		printf("\n\t\t*0--返回--*");
		printf("\n\t\t**********");
		printf("请输入选择的操作的数字");
		scanf_s("%d", &choice);
		switch (choice)
		{
		case 1:
			Insertqueue(q);
			break;
		case 2:
			Outqueue(q);
			break;
		case 3:
			Showqueue(q);
			break;
		case 4:
			printf("\n\t\t队列长度为:%d\n", length(q));
			break;
		case 0:
			i = 0;
			break;
		}
	}
}

代码效果如下——
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值