c语言用简单数组实现循环队列

学习数据与结构时在用数组实现循环队列,从书上和网上找了一些例子,但是都打不到理想效果,有用c++的,有用c和结构体的,就是没找到简单用数组实现的完美循环队列,最后经过我反复的思考,整理出了这个例子,当然还是大众的以牺牲一个存储空间来实现的!具体的就不说了,自己理解吧!

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 3

int queue[MaxSize];
int front=0;
int rear=0;

void add_queue(int value)
{
	if((rear+1)%MaxSize==front){
		printf("The queue is full!\n");
	}else{
		rear=(rear+1)%MaxSize;
		queue[rear]=value;
	}
}

int del_queue()
{
	int temp;
	if(front==rear){
		return -1;
	}
	front=(front+1)%MaxSize;
	temp=queue[front];	
	queue[front]=0;
	return temp;
	
}

void main()
{
	int select;
	int i,temp;

	for(i=0;i<=MaxSize;i++)
		queue[i]=0;

	printf("(1)Input a data\n");
	printf("(2)Output a data\n");
	printf("(3)Exit\n");
	printf("Please select:");
	scanf("%d",&select);
	printf("\n");
	if(select!=3){
		do{
			switch(select){
				case 1: printf("Please input the input value==>");
					scanf("%d",&temp);
					add_queue(temp);
					printf("The content of queue:\n");
					for(i=0;i<=MaxSize;i++){
						if(queue[i]!=0)
							printf("%d\n",queue[i]);
					}break;
				case 2: if((temp=del_queue())==-1)
						printf("The queue si empty!\n");
					else{
						printf("The output value is [%d]\n",temp);
						printf("The content of queue:\n");
						for(i=0;i<=MaxSize;i++){
							if(queue[i]!=0)
								printf("%d\t",queue[i]);
							printf("\n");
						}
					
					}break;
			}
		
		printf("(1)Input a data\n");
		printf("(2)Output a data\n");
		printf("(3)Exit\n");
		printf("Please select:");
		scanf("%d",&select);
		printf("\n");
		}while(select!=3);
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值