【发布时间】:2018-09-16 22:10:15
【问题描述】:
我试图更好地理解我的老师关于如何从双向链表中删除节点的笔记,她在板上的内容是
public void deleteNode(Node D){
Node current = head;
while(current.data != D.data && current.next != null){
current = current.next;
}
d.prev.next = d.next;
d.next.prev = current.prev.
}
我不禁觉得这不足以删除一个节点。我在想也许她的意思是
current.prev.next = d.next and
current.next.prev = d.prev
一旦我弄清楚如何更好地理解这一点,如果我想通过这样做从中间删除一个节点是否有意义
public void deleteMiddle(){
Node current = head;
int i = 0;
while(i < size/2){
current = current.next;
i++;
}
deleteNode(current);
}
【问题讨论】:
-
从双向链表中删除节点可以在O(1)中完成。根本不需要迭代。这是双向链表相对于单链表的巨大优势之一。
标签: java nodes doubly-linked-list