以最棒的编程语言——C语言 实现简单队列

#include<stdio.h>
#include<stdlib.h>
#define MAX 5
typedef int datatype;
typedef struct node
{
	datatype data[MAX];
	int front, rear;
}queue;
queue *a, *b, *c;

void initQueue(queue*& Q)
{
	Q = (queue*)malloc(sizeof(queue));
	Q->front = 0;
	Q->rear = 0;
}
int isEmpty(queue* Q)
{
	if (Q->front == Q->rear)
		return 1;
	else
		return 0;
}
int isFull(queue* Q)
{
	if ((Q->rear + 1) % MAX == Q->front)
		return 1;
	else
		return 0;
}
void EnQue(queue*& Q, int x)
{
		Q->data[Q->rear] = x;
		Q->rear = (Q->rear + 1) % MAX;
		
}
void DeQue(queue*& Q)
{
		
		printf("          出队元素为:%d\n", Q->data[Q->front]);	
		Q->front = (Q->front + 1) % MAX;	
}
void getFront(queue* Q)
{	     
		printf("          队头元素为:%d\n", Q->data[Q->front]);
}
void printQue(queue* Q)
{
	int x = Q->front;
	while (x!= Q->rear)
	{
		printf("%d ", Q->data[x]);
		x = (x + 1) % MAX;
	}
}
int main()
{
	
	int k = 100;
	int x;
	do
	{
		printf("\n\n");
		printf("\n          1.队列初始化");
		printf("\n          2.判断队列是否为空");
		printf("\n          3.判断队列是否未满");
		printf("\n          4.将值为x的元素入队");
		printf("\n          5.元素出队,并返回出队的元素");
		printf("\n          6.获取对头元素");
		printf("\n          7.打印队列元素");
		printf("\n          0.结束程序运行");
		printf("\n         =====================");
		printf("\n          请输入要执行的操作:  ");
		scanf_s("%d", &k);
		switch (k)
		{
		case 1:
			initQueue(a);
			break;
		case 2:
			if (isEmpty(a))
				printf("          队列为空\n");
			else
				printf("          队列非空\n");
			break;
		case 3:
			if (isFull(a))
				printf("          队列已满\n");
			else
				printf("          队列未满\n");
			break;
		case 4:
			printf("          请输入进队的值:");
			scanf_s("%d", &x);
			getchar();
			if (isFull(a))
				printf("          队列已满\n");
			else
			{
			EnQue(a, x);
			printf("          入队后的完整队列为:");
			printQue(a);
			}
			break;
		case 5:
			if (isEmpty(a))
				printf("          队列已空\n");
			else
			{
				DeQue(a);
				printf("          ");
				printQue(a);
			}
			break;
		case 6:
			getFront(a);
			break;
		case 7:
			printf("          ");
			printQue(a);
			break;
		}
	} while (k != 0);
	printf("\n              按回车键,返回...\n");

	getchar();

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值