【发布时间】:2021-02-12 13:15:09
【问题描述】:
我已经尝试使用collections.deque 和queue.Lifoqueue 来实现堆栈和队列,虽然它们都可以正常工作,但我想从头开始实现它。那么根据时间和空间复杂度,哪种方法最好呢?我尝试通过单链表和 python 列表函数来实现它。还有比这更好的方法吗?
【问题讨论】:
-
在什么意义上更好?例如,
list可以完美地用作堆栈,您想改进什么? -
在 collections.OrderedDict 的文档中,他们给出了 OrderedSet 的可能实现。 OrderedSet 是使用双向链表实现的。您可能可以采用该实现,并折腾它的“设置”部分。
-
@juanpa.arrivillaga 是的,
list将完美运行是绝对正确的,但如果堆栈增长,它在速度和内存分配方面有其自身的缺点。所以从某种意义上说,我们可以更快地弹出和追加,而没有上述缺点并且不使用任何模块。 -
@DhruvSharma 到底有什么缺点? Python 列表对象具有摊销的常数时间追加和弹出。鉴于它们是在 C 中实现的,位于解释器层之下,您是否会在 pure python 中找到一个有效更快的数据结构来制作堆栈是值得怀疑的。
标签: python data-structures stack queue