哪种数据结构最适合从给定位置数组或链接列表中删除元素

时间:2018-07-31 07:13:31

标签: data-structures

有1000个数字的列表是否有要删除的第500个元素,要使用数组或链表的数据结构,为什么?

1 个答案:

答案 0 :(得分:0)

在链接列表中的删除:

最简单的方法是删除第一个节点,因为您有指向第一个节点的指针。 因此,将指针指向需要花费 O(1)时间的第二个节点。

但是,删除其他任何节点将分两步进行:

第1步。到达要删除的节点。为此,我们必须逐个扫描每个节点,直到到达该节点为止(无随机访问)。这将花费 O(n)时间。

第二步。找到它之后,我们需要从列表中将其分离。这将花费 O(1)时间。

所以总时间= O(1)+ O(n)

数组中的删除

数组中任何节点的删除总是相同的。没有特殊情况。

第1步。首先,您访问array元素,这需要 O(1)时间。

第二步。然后,您可以通过将所有其他元素向后移动一个位置来将其删除。这需要 O(n)时间。

总时间= O(1)+ O(n)

因此,删除数组中的第一个元素会比删除链表中的第一个元素花费更多。

在所有其他情况下,无意,删除数组和链接列表的代价均应相同。 但是,如果我们实际计算时间,我认为与数组相比,链表中的删除/插入速度更快。