数据结构-队列

                                        数据结构-队列

 队列数据数据结构就类似于,排队买火车票,其特性为先进先出,如下所示

这张图演示的是一开始是一个空队列,然后经过两次增加数据,两次删除数据,队列所出现的情况,而我在代码中使用的用数据实现的循环队列,这是实现队列的一种方式,当然还有其它的方式,我所实现的方式,仅供参考。下图演示了,增加循环队列增加与删除队列的状态。

其具体实现代码如下

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#define error INT_MIN//错误代码 
#define input_size 5 //输入数据的个数 
const int maxn=100;//队列的大小 
int num[maxn];		//队列的空间 
int top=-1,rear=0; //top为队首下标 rear为队尾下标 ,
				//top记录第一个元素的下标,rear会随着数据的增加而变长 
int push_queue(int val){//入队列 
	int temp=rear; //记录队列当前的下标,用于找到要插入数据的下标 
	if(top==rear)return error;//如果top==rear表示队列已满,返回错误代码  
	rear=(rear+1)%maxn;//增加一个数据,队尾下标需要增1,但因为是用数据实现,所以不能超过maxn 
	return num[temp]=val;//数据传入队列 
}
int pop_queue(){//出队列 
	top=(top+1)%maxn;  //因为初始top为-1,所以需要先加一 
	if(top==rear)return error;
	return num[top]; //返回值 
}
int main(){
	int i,val;
	for(i=0;i<input_size;i++){//输入数据 
		scanf("%d",&val);
		push_queue(val);
	}
	
	for(i=0;i<input_size;i++){//输出数据 
	printf("%d ",pop_queue());
	}

	getchar();
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值