单链表的删除指定节点解析

本文介绍了一种在单链表中删除指定节点的方法,并提供了具体的实现代码。文章详细解释了如何处理头节点、尾节点及普通节点的删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


删除指定的值,或者根据stack来实现删除节点我并没有写。


package com.sun.myapplication;

/**
 * Created by sunxin on 2017/9/10.
 */

public class StackUtils {
    public  class Node{
        int data;
        Node next;

        public Node( int data) {
           this.data=data;
        }
    }
    //删除单链表中指定的节点
    public static void  deleteNode(Node head,Node node){
        //删除尾节点采用顺序查找尾部节点的,这里head节点不能为null我就不加判断了
        //这里我们先判断尾节点是不是null,然后通过循环来查找尾节点的上一个节点
        //这里的while条件意思是,如果上一节点的子节点不等于尾节点,我们就无限将子节点赋值为父节点,然后查找到
        //当上一节点的子节点等于尾节点的时候我们就跳出循环,此时我们已经找到尾节点的上一节点
        //我们将找到的尾节点额上一个节点的next变null,此时我们就删除了尾节点
        if (node.next==null){
            while (head.next!=node){
                head=head.next;
            }
            head.next=null;
        }
        //删除头节点
        //这里比较简单我们直接判断是不是头节点,如果是就直接null
        else if(head==node){
            head=null;
        }
        //这里是普通节点
        //单链表 删除节点就头 尾 普通 三种判断
        else{
         //其实删除的普通节点就是轮作,就是将我要删除的节点的下一节点替换到当前要删除的节点
         //从而使当前节点被他的子节点替换掉。绳子断了我们用剩下的接上一样的道理
            Node a=node.next;//获得子
            node.data=a.data;//替换
            node.next=a.next;//替换
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值