题目:
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Supposed the linked list is 1 -> 2 -> 3 -> 4
and you are given the third node with value 3
, the linked list should become 1 -> 2 -> 4
after calling your function.
就是用来删除单链表中的某个节点。但是它的指导代码也给了如下
Definition for singly-linked list.
public class ListNode
{
int val;
ListNode next;
ListNode(int x)
{
val = x;
}
}
乍一看这个定义单链表的代码就是我们普通的定义单链表的代码,所以还是可以理解的,定义了一个值域和下一个的节点域。但是它下面也给了一个要求我们实现的删除节点的代码,发现这个代码比较奇怪,没有给我们定义一个头结点,只有一个单单的要删除的节点,所以与我们平常要完成的还不一样。后来这题的思路是用我们去覆盖当前的节点,就是用后面的节点来覆盖前面的节点。
public class Solution
{
public void deleteNode(ListNode node)
{
if(node == null)
return;
node.val = node.next.val;
node.next = node.next.next;
}
}
就是都用后面的来覆盖前面的。