思路:即给定一个要删除的结点pNode,由于是单向链表,因此只能向下遍历而不能向上遍历,因此只能采取的方法是:对于要删除的结点的后面的结点的值向前进行拷贝传递,即将pNode后面的值赋值给pNode,然后将pNode.next指向pNode.next.next;不需要对后续结点全部向前移动,只要改变这个结点下一个结点的指向即刻。特殊的,如果要删除的结点是尾结点,即pNode.next==null,那么如果直接将pNode③赋值为null,那么其实本质上并不会导致结点③被删除,要将结点③删除必须是的结点②的next指针指向null,而不是直接改变结点③为null。因此对于要删除的结点为尾结点的特殊情况,程序不要求处理,直接返回FALSE即可。
public class Remove {
publicboolean removeNode(ListNode pNode) {
if(pNode==null||pNode.next==null)
{
//不要写pNode==null;
return false;
}
pNode.val=pNode.next.val;
pNode=pNode.next;
return true;
}
}