python中的队列

python中的队列

请教老师。我发现Python中collections中的deque基本可以当成队列来用。但是有没有类似的循环队列呢?虽然deque提供了rotate的功能,但是和循环队列应该不太一样,毕竟是同时移动所有元素,复杂度还是O(N)。谢谢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2021-06-26 06:46:58

据我所知,Python 的 deque 底层是链表。印象里这个课程后续,我们也会使用链表来实现队列的:)


我不是 Python 底层实现方面的专家,不是很确定 Python 内部是否有循环队列的应用。


但是我怀疑你搞混了一件事情。循环队列的“循环”,不是表现在向用户提供类似 rotate 的接口。实际上,我们实现的队列,并没有 rotate 接口。但它也是循环队列。循环队列所谓的的“循环”,是一种内部机制,这种内部机制,保证了可以在很快的时间(平均复杂度 O(1))完成入队和出队操作。但是,用户是感知不到这个机制具体是什么的,也就是这个机制本身对用户是屏蔽的。


这是数据结构设计的一个非常重要的目标。所谓的抽象就是这个意思。在这个课程后续,你还会多次遇到类似的情况。比如 Map,就是一个映射,可以存储键-值的数据对。但是具体如何实现这个存储?我们可以使用树,使用哈希表,甚至使用链表进行实现,但是,用户在使用 Map 的时候,只看到可以“增删改查”,具体的实现对用户屏蔽了。


开发者需要理解这些具体实现,以及具体实现之间的差异,但是使用者不知道。这就像你面对一个 deque,你其实不知道其内到底是循环队列,还是链表的。但是,如果你需要为一款语言设计度列这种数据结构;或者不同的底层实现在不同的场景下有性能差异的时候,你就需要考虑底层的具体实现问题了:)


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师