LeetCode #237 Delete Node in a Linked List

题目:

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.

 

分析:

删除链表中的指定节点。

这道题目很有意思。没有给出链表的头结点,因此也就无法知道要删除节点的前一个节点。这怎么能行呢?乍一看是个不可能完成的任务。其实不然。我们在做链表操作的时候往往有一种思维定式,光想着修改next,却想不到还可以修改val。直接把下一个节点的值复制到当前节点,然后再按照一般方法删除下一个节点即可。

另外注意一下,使用C或者C++等语言时,要防止内存泄露。

 

代码:

Java