题目:
实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点。
输入:单向链表a->b->c->d->e->f中的节点c 结果:不返回任何数据,但该链表变为a->b->d->e->f
个人思路:
因为没有头节点,所以直接通过循环删除是不可能的,但是我们可以删除该节点的下一个节点,那么如果让该节点的值等于下一个节点的值(理论上,我们已经删除了该节点的值,只是没删除节点),然后删除该节点下一个节点,那么其实就是删除该节点
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
ListNode next=node.next;
node.val=next.val;
node.next=next.next;
}
}