链表在具有动态数组的语言中是否有任何值(value),例如Python(当然,它具有列表数据结构)?
我目前理解Python中的列表实际上只是一个静态数组,随着插入更多数据,它将自身重新定义为一个新数组(尺寸更大),将数据从旧数组复制到新数组(从而使其动态化) )。这是正确的吗?
我还了解列表和链接列表如何以不同的方式在内存中存储数据(列表以连续方式,链接列表以非连续方式),但这是否提供了任何主要优势?
最佳答案
是的,确实如此。从链表中删除链接的时间复杂度为O(1),而对于动态数组来说则是线性的。
假设您想为 LRU 构建一个数据结构。通常,您将有一个用于“触摸”操作的哈希表,以及一个用于查看已老化内容的序列数组。当访问一个项目时,哈希表会在序列中找到它,并将其移动到末尾。如果需要驱逐某个项目,则使用序列中的第一项来查找哈希表中的该项目,然后将其删除。
在此示例中,使用链表进行序列操作意味着一切都可以在(预期)O(1) 时间内完成。有了动态向量,一切都是线性的。链接列表仍然有其用途。
关于python - 链表在具有动态数组的语言中是否有任何值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31027840/