队列的实现-简明易懂的方法

本文写于本人小白入门之时,开始时举步难行,找了不少度娘、博客仍觉得不明确,走了许多的弯路,终于掌握了一些皮毛之见。自我总结了一些东西,个人认为是比较容易理解,以供大伙和个人学习,若有不正确之处恳请各位大神指出!

队列(queue)的结构是“先进先出”,和排队一个道理,谁先排队谁就轮到谁先。其实队列和栈都有一些相同点都可以用数组、指针、引用等方法创建,本文将只以指针为例,有兴趣的朋友可见本人的文章《栈的实现-简明易懂的2种方法》来试试队列用数组实现的效果。

指针传参实现:

本代码数据存储量为length-2,Key[0]在循环队列中被本人跳过key[99]则用作循环的跳点。

在本文中,为了方便理解,创建的队的存储量只有length-2,可以在代码上修改和调整就可以实现存储量为length。
#include<stdio.h>
#define length 100
typedef struct queue
{
	int head;
	int tail;
	int key[length];
}queue;
void enterqueue(queue *p,int x)
{
	if(p->tail==length-1)
		p->tail=1;
	else
	{
		p->key[p->tail]=x;
		p->tail++;
	}
}
void quitqueue(queue *p)
{
	if(p->head==length-1)
		p->head=1;
	else
	{
		printf("%d\n",p->key[p->head]);
		p->head++;
	}
}
int main()
{
	queue q;
	q.tail=1;
	q.head=1;
	enterqueue(&q, 1);  
    enterqueue(&q, 3);  
    enterqueue(&q, 5);  
    enterqueue(&q, 7); 
	quitqueue(&q);
    quitqueue(&q);
	quitqueue(&q);
	return 0;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值