实践中的链接列表

时间:2017-05-28 11:44:09

标签: memory data-structures linked-list storage ram

我对this video.

中提出的想法有些疑问

扬声器显示一个包含值和指针的数组,并且他还显示了一个单独的" free"链接列表,每当添加/删除项目时都会更新。

为什么使用这些?没有使用数组/限制自己到一组空闲节点会破坏链表的目的吗?

使用链表是否能够遍历碎片数据?

为什么要在动态分配存储空间时使用这些空闲节点?

对我来说,拟议的结构看起来并不是动态的,实际上是一个复杂而低效的数组。

1 个答案:

答案 0 :(得分:1)

您提到的方法在某些用例中很有意义。例如,如果常见的情况是数组已满90%并且大部分时间花费在迭代上,则可以非常快速地遍历数组并跳过几个空项。这可能比指针追逐更快,更快。哪些普通链接列表使用,因为CPU的硬件预取器可以提前预测您需要的内存。

与普通数组相比,没有空闲列表,它的优点是O(1)将一个元素分配到一个空槽中。