删除/撤消双向链表中的节点

时间:2015-10-04 04:38:44

标签: java doubly-linked-list

我知道删除双向链表中节点的时间复杂度为O(1)。我已经看到很多代码示例,其中人们在双向链表中使用删除方法中的循环,但时间复杂度仍为O(1)。我编写了一个撤消的代码,即删除双向链表中的节点,但我的问题是:当我调用{{1}时,我的代码是否会在undo()方法中撤消/删除O(1)中的节点包含循环的方法?我很感激解释!提前谢谢!

getNode()

2 个答案:

答案 0 :(得分:1)

如果您获得必须删除的节点,则从双链表中删除节点为O(1)。

但是在这种情况下你必须搜索节点,那么你的复杂性会因搜索而改变。在这种情况下,您的复杂性将变为O(n)。

答案 1 :(得分:0)

您将增加for循环的时间复杂度,因为当您跟踪代码的执行路径时,您需要遍历那些for循环以完全执行for循环。你不能使用方法调用来减少时间复杂度,因为在程序执行期间,所有执行的语句都会计算在内。