思路:并不是真正的删除,而是让遍历链表的时候看起来节点已经被删除了。
关键词:o(1)时间
java是值传递,所以无法实现类似c++中传入指针,将指针置为null
ListNode deleteNode(ListNode head, ListNode toBeDelete) {
if (head == toBeDelete) {
return null;
} else {
if (toBeDelete.next == null) {
ListNode temp = head;
while (temp.next != null) {
if (temp.next == toBeDelete) {
temp.next = null;
break;
}
temp = temp.next;
}
} else {
toBeDelete.value = toBeDelete.next.value;
toBeDelete.next = toBeDelete.next.next;
}
}
return head;
}