【面试题 02.03】删除中间节点

题目

题目链接

实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。
示例:

输入:单向链表a->b->c->d->e->f中的节点c
结果:不返回任何数据,但该链表变为a->b->d->e->f

实现思路

注意审题,输入的链表是从需要删除的节点开始到结尾的(链表中没有该节点之前的节点)。
删除这个节点其实就是将当前节点的next域的引用和val值赋值给它本身,然后删除它的next域。

代码

/**
 * 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 nextNode = node.next;
        node.val = node.next.val;
        node.next = node.next.next;
        node = nextNode;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章