题目描述
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的节点,请执行删除操作,若该节点为空节点,返回false,否则返回true
Thinking
实现链表的节点删除我们只需知道该节点的前节点然后修改该节点next的指向就可以了。然而根据题目要求我们并无法得知该节点的前节点。所以换一种思路我们只需将val值错位就可以了 只需将该节点的值换成下一结点的值然后删除下一结点、
Code
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Remove {
public boolean removeNode(ListNode pNode) {
// write code here
if(pNode==null||pNode.next==null) return false;
ListNode p=pNode;
// while(p.next!=null){
// p.val=p.next.val;
// p=p.next;
// }
// p=null;
ListNode q=pNode.next;
p.val=q.val;
p.next=q.next;
return true;
}
}