删除链表的节点

题目:

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

解答:

 1 public class Solution {
 2 
 3     public static void deleteNode(ListNode head, ListNode node) {
 4         if(head == null || node == null) {
 5             return;
 6         }
 7 
 8         // 待删除的节点不是尾节点
 9         if(node.next != null) {
10             ListNode tmp = node.next;
11             node.val = tmp.val;
12             node.next = tmp.next;
13         } else if(node == head) { // 头节点
14             head = head.next;
15             node = null;
16         } else {
17             // 尾节点
18             ListNode tmp = head;
19             while(tmp.next != node) {
20                 tmp = tmp.next;
21             }
22 
23             tmp.next = null;
24             node = null;
25         }
26     }
27 }

原文地址:https://www.cnblogs.com/wylwyl/p/10470958.html