教科书说链接列表需要O(n)才能插入,因为我们只保留指向起始节点的指针,并且我们必须从头开始遍历最后一个节点。但是,为什么不在每次在链表中插入新项时更新也存储最后一个节点指针?是否在链表设计中定义了什么?
答案 0 :(得分:0)
您可以使用尾随指针,但这取决于链接列表是否有序。如果您有一个已排序的链接列表,则必须保留链接列表顶部的指针,因为您可能需要在其中插入一个项目。没有必要在排序的链表中有一个尾随指针,但它可以提供帮助。对于链表的大O表示法,你可以得到第一个元素正在寻找的情况,最好的情况是O(1),但是,链表的平均情况和最坏情况将是O(n)
答案 1 :(得分:0)
这正是一些标准库所做的事情。例如,在STL(C ++)std::list
中,在列表末尾追加元素或访问最后一个元素需要花费一些时间。有关详细信息,请参阅std::list,尽管STL中的std::list
是双链表。