1.题目描述:
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
2.解题思路及代码:
由于不能得到待删除节点的前驱节点,所以不能用常规操作删除。
此题解法为,将待删除节点的下一节点的值复制到待删除节点,然后删除待删除节点的下一节点
例:要删除“5”节点
(1)4->5->1->9 (2)4->1->1->9 (3)4->1->9
代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) { node.val = node.next.val; node.next = node.next.next; } }