根据关于链表的维基百科文章,在链表中间插入被认为是 O(1)。我认为这将是O(n)。您不需要找到可能在列表末尾附近的节点吗?
这种分析是否没有考虑到节点操作的发现(尽管它是必需的)而只是插入本身?
编辑:
与数组相比,链表有几个优点。在列表的特定点插入元素是一个常数时间操作,而在数组中插入可能需要移动一半或更多的元素。
上面的说法对我来说有点误导。如果我错了,请纠正我,但我认为结论应该是:
数组:
- 找到插入/删除点 O(1)
- 执行插入/删除 O(n)
链接列表:
- 找到插入/删除点 O(n)
- 执行插入/删除 O(1)
我认为唯一不必找到该位置的情况是,如果您保留某种指向它的指针(例如在某些情况下使用头部和尾部)。所以我们不能直截了当地说链表在插入/删除选项中总是优于数组。