扬声器显示一个包含值和指针的数组,并且他还显示了一个单独的" free"链接列表,每当添加/删除项目时都会更新。
为什么使用这些?没有使用数组/限制自己到一组空闲节点会破坏链表的目的吗?
使用链表是否能够遍历碎片数据?
为什么要在动态分配存储空间时使用这些空闲节点?
对我来说,拟议的结构看起来并不是动态的,实际上是一个复杂而低效的数组。
答案 0 :(得分:1)
您提到的方法在某些用例中很有意义。例如,如果常见的情况是数组已满90%并且大部分时间花费在迭代上,则可以非常快速地遍历数组并跳过几个空项。这可能比指针追逐更快,更快。哪些普通链接列表使用,因为CPU的硬件预取器可以提前预测您需要的内存。
与普通数组相比,没有空闲列表,它的优点是O(1)将一个元素分配到一个空槽中。