数据结构与算法分析笔记与总结(java实现)--链表10:输入某个结点删除单向链表中的该结点

思路:即给定一个要删除的结点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;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值