python - 链表在具有动态数组的语言中是否有任何值(value)?

标签 python arrays linked-list dynamic-arrays

链表在具有动态数组的语言中是否有任何值(value),例如Python(当然,它具有列表数据结构)?

我目前理解Python中的列表实际上只是一个静态数组,随着插入更多数据,它将自身重新定义为一个新数组(尺寸更大),将数据从旧数组复制到新数组(从而使其动态化) )。这是正确的吗?

我还了解列表和链接列表如何以不同的方式在内存中存储数据(列表以连续方式,链接列表以非连续方式),但这是否提供了任何主要优势?

最佳答案

是的,确实如此。从链表中删除链接的时间复杂度为O(1),而对于动态数组来说则是线性的。

假设您想为 LRU 构建一个数据结构。通常,您将有一个用于“触摸”操作的哈希表,以及一个用于查看已老化内容的序列数组。当访问一个项目时,哈希表会在序列中找到它,并将其移动到末尾。如果需要驱逐某个项目,则使用序列中的第一项来查找哈希表中的该项目,然后将其删除。

在此示例中,使用链表进行序列操作意味着一切都可以在(预期)O(1) 时间内完成。有了动态向量,一切都是线性的。链接列表仍然有其用途。

关于python - 链表在具有动态数组的语言中是否有任何值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31027840/

相关文章:

java - 选择一个随机索引,然后从该索引获取属性(Jmeter)

c# - byte[] 的图像无限期挂起

c - 在链表末尾插入

algorithm - 在通用数据结构方面,如何高效地列出树数据结构中节点下的所有叶子?

python - 我如何处理部分初始化的类

python - 使用 cv2 访问图像的像素

arrays - Delphi:Char 和 TCharArray 数组 "Incompatible Types"

python - 通过取列之间的平均值合并 Pandas 中的两个数据框

python - NotADirectory错误: [Errno 20] Not a directory: '/home/ghost/automation/pwd/geckodriver' with GeckoDrriver Firefox and Selenium using Python3

c - 如何用已有的元素填充链表?