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

来源:互联网 发布:欧奈尔选股公式源码 编辑:程序博客网 时间:2024/06/18 13:51


删除指定的值,或者根据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;//替换        }    }}

原创粉丝点击