为什么不在Linked List中保留最后一个节点指针以减少在结束时的插入?

时间:2014-11-08 21:52:49

标签: data-structures linked-list

教科书说链接列表需要O(n)才能插入,因为我们只保留指向起始节点的指针,并且我们必须从头开始遍历最后一个节点。但是,为什么不在每次在链表中插入新项时更新也存储最后一个节点指针?是否在链表设计中定义了什么?

2 个答案:

答案 0 :(得分:0)

您可以使用尾随指针,但这取决于链接列表是否有序。如果您有一个已排序的链接列表,则必须保留链接列表顶部的指针,因为您可能需要在其中插入一个项目。没有必要在排序的链表中有一个尾随指针,但它可以提供帮助。对于链表的大O表示法,你可以得到第一个元素正在寻找的情况,最好的情况是O(1),但是,链表的平均情况和最坏情况将是O(n)

答案 1 :(得分:0)

这正是一些标准库所做的事情。例如,在STL(C ++)std::list中,在列表末尾追加元素或访问最后一个元素需要花费一些时间。有关详细信息,请参阅std::list,尽管STL中的std::list是双链表。