基础数据结构----队列

        队列中的数据存取方式是“先进先出”,只能向队尾插入数据,从队列头移动数据。队列的原型在生活中很常见,如食堂打饭的队伍,先到先服务。队列有两种实现方式:链队列和循环队列

        链队列可以看作单链表的一种特殊情况,用指针把各个节点连接起来。

        循环队列是一种顺序表,使用一组连续的存储单元依次存放队列元素,用两个指针head和tail分别指示队头元素和队尾元素,当head和tail走到底时,下一步回到开始的位置,从而在这组连续空间内循环。循环队列能解决溢出问题。如果不循环,head和tail都一直往前走,可能走到存储空间之外,导致溢出。

        以下给出最简单的手写队列代码:

const int N = 1e5;//定义队列大小
int que[N],head,tail;//队头队尾指针,队列的大小为tail - head + 1
head++;//弹出队头,注意head <= tail
que[head];//读队头数据
que[++tail] = data;//数据data入队,尾指针加1,注意不能溢出

        这个队列不是循环的,tail可能超过N,导致溢出。

        竞赛中一般用STL queue或手写静态数组实现队列,下一节将重点讲解其用法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Valueyou24

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值