python中的队列
请教老师。我发现Python中collections中的deque基本可以当成队列来用。但是有没有类似的循环队列呢?虽然deque提供了rotate的功能,但是和循环队列应该不太一样,毕竟是同时移动所有元素,复杂度还是O(N)。谢谢
正在回答 回答被采纳积分+1
据我所知,Python 的 deque 底层是链表。印象里这个课程后续,我们也会使用链表来实现队列的:)
我不是 Python 底层实现方面的专家,不是很确定 Python 内部是否有循环队列的应用。
但是我怀疑你搞混了一件事情。循环队列的“循环”,不是表现在向用户提供类似 rotate 的接口。实际上,我们实现的队列,并没有 rotate 接口。但它也是循环队列。循环队列所谓的的“循环”,是一种内部机制,这种内部机制,保证了可以在很快的时间(平均复杂度 O(1))完成入队和出队操作。但是,用户是感知不到这个机制具体是什么的,也就是这个机制本身对用户是屏蔽的。
这是数据结构设计的一个非常重要的目标。所谓的抽象就是这个意思。在这个课程后续,你还会多次遇到类似的情况。比如 Map,就是一个映射,可以存储键-值的数据对。但是具体如何实现这个存储?我们可以使用树,使用哈希表,甚至使用链表进行实现,但是,用户在使用 Map 的时候,只看到可以“增删改查”,具体的实现对用户屏蔽了。
开发者需要理解这些具体实现,以及具体实现之间的差异,但是使用者不知道。这就像你面对一个 deque,你其实不知道其内到底是循环队列,还是链表的。但是,如果你需要为一款语言设计度列这种数据结构;或者不同的底层实现在不同的场景下有性能差异的时候,你就需要考虑底层的具体实现问题了:)
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星