【剑指Offer】在O(1)时间删除链表结点

题目

给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。

实现

1
2
3
4
5
6
7
8
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void deleteNode(ListNode head, ListNode node){
if (node.next != null){
node.val = node.next.val;
node.next = node.next.next;
}
else if (head == node)
head = null;
else {
while (head.next != node)
head = head.next;

head.next = null;
}
}