实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。
示例:
输入:单向链表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) {
if(node == null || node.next == null){
node = null;
return;
}
// 从当前节点开始,把后面的节点都向前移动一位即可
while(node != null){
if(node.next.next == null){
node.val = node.next.val;
node.next = null;
return;
}else{
node.val = node.next.val;
node = node.next;
}
}
}
}