[数据结构] python 队列的介绍

本文介绍了队列数据结构的特性,包括先进先出的原则,并探讨了如何使用Python列表和collections.deque来实现队列。队列在列表实现中可能会造成空间浪费,因此推荐使用deque来创建高效的队列,其提供了append()用于入队和popleft()用于出队。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、队列

队列(Queue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。

队列性质:先进先出(First-in,First-out)

队列的基本操作:

入队(进队):插入动作。进行插入的一端称为队尾(rear)

出队:删除动作。进行删除的一端成为队头(front)

队列能否用列表简单实现,为什么?

答:简单的用列表来做,如图所示:

当元素出队时,没有用的空间会随着元素的出队而增加,空间开销会变得很大。这种实现方式,不好。简单的用列表来做做不到

解决方法:把队列头尾连起来,变成循环队列,如图所示:

图一:是个空队列  (rear=front)

图二、三:入队(rear+1)%Maxsize

图四、五:出队(front+1)%Maxsize

注意:当front=11(最大长度)时,要想把front变回0,算法是(front+1)%Maxsize,且无论什么数,对最大长度取余最后都能算出相应位置。所以出队为(front+1)%Maxsize,而不是front+1。同理,入队也是。

图六:如果此时此刻在rear+1这个位置再加一个元素,队满,rear=front,这个时候就会导致我们分不清front=rear到底是队空还是队满,于是决定牺牲一小块空间(如上图空间5),这个时候(rear

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值