【问题标题】:Is there a linked list predefined library in Python? [closed]Python中是否有链表预定义库? [关闭]
【发布时间】:2013-11-14 03:38:11
【问题描述】:

我知道在 c++ 中它已经存在 #include <list> 现在我很想知道它是否也存在于python中。

【问题讨论】:

  • 欢迎来到 SO!你能详细说明你为什么需要这个吗? Python 已经有了list 类型。
  • 一个 Python list 相当于一个数组,不是链表,是不同的数据类型。
  • 到底为什么要关闭?这是一个简短、独立的问题,带有跨语言示例。
  • @CharlesMerriam 那是你的 stackoverflow。关闭和标记重复他们可以做的一切。

标签: python linked-list singly-linked-list


【解决方案1】:

您还可以查看llist python 包,它提供了一些deque 没有的有用功能。该包中不仅有双链表,还有单链表数据结构。恕我直言,这个包的最大优点之一是能够存储对 llist 元素的引用。

【讨论】:

【解决方案2】:

看来collections.deque 是 Python 中的双向链表库。根据文档,当从头部或尾部追加或弹出时,它应该有大约 O(1) 的成本,以及常规插入的 O(n)(这与我们对链表的期望相匹配)。

API:http://docs.python.org/2/library/collections.html#collections.deque

来源:https://stackoverflow.com/a/282238/2441252

【讨论】:

  • 我浏览了 deque 的文档。似乎双端队列更像是 FIFO 或 LIFO。您不能在队列中间插入元素。您只能在开头或结尾插入它们。
  • @winni2k - 仅当您不做一些聪明的事情时,例如保留对表示已知插入点的特定节点的引用。使用双向链表,您可以对智能定义的点进行 O(1) 次插入,并且只需支付 O(n) 的成本即可预先找到这些点。
  • 我不同意,对于给定元素引用的链表,插入/删除应该是 O(1)
  • @Mugen 对于 python 2 为真。但对于 Python 3.5,您可以在双端队列中插入元素。见:docs.python.org/3.7/library/…
  • 链表应该插入 O(1)
猜你喜欢
  • 2010-12-16
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2018-12-20
  • 2020-11-23
相关资源
最近更新 更多