栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java数据结构与算法(四)双向链表的增删改

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java数据结构与算法(四)双向链表的增删改

双向链表的介绍

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

双向链表增删改的实
public class Doublelinked {
    public static void main(String[] args) {
        System.out.println("双向链表的测试");
        linkedNode hero=new linkedNode(1,"宋江","及时雨");
        linkedNode hero2=new linkedNode(2,"林冲","豹子头");
        Doublelinklist doublelinklist=new Doublelinklist();
        doublelinklist.addlinkedNode(hero);
        doublelinklist.addlinkedNode(hero2);
        doublelinklist.showlinkedNode();
        System.out.println("删除后");
        doublelinklist.dellinkedNode(hero2);
        doublelinklist.showlinkedNode();
        doublelinklist.update(hero2);
    }
}
class Doublelinklist{
    private linkedNode head=new linkedNode(0,"","");

    public linkedNode getHead() {
        return head;
    }
    public void addlinkedNode(linkedNode hero){
       linkedNode temp=head;
        while (true){
            if (temp.next==null){
                temp.next=hero;
                hero.pre=temp;
                break;
            }
            temp=temp.next;

        }

    }
    //链表的修改
    //链表的更新,根据no
    public void update(linkedNode  herolink){
        //temp3是辅助结点
        linkedNode temp3=head.next;
        if (head.next==null){
            System.out.println("链表为空");
        }
        while (true){
            if(temp3.next==null){
                System.out.println("没有这个序号的英雄");
                break;

            }

            else if (temp3.next.no==herolink.no){
                temp3.next.nNickName=herolink.nNickName;
                temp3.next.name=herolink.name;
                break;

            }

            temp3=temp3.next;


        }



    }
    public  void dellinkedNode(linkedNode hero){
        linkedNode temp=head.next;
        while (true){
            if (temp==null){
                System.out.println("不存在改结点");
                break;
            }
            else if(temp.no==hero.no){
                temp.pre.next=temp.next;
                if (temp.next!=null){
                temp.next.pre=temp.pre;}
                break;

            }
            temp=temp.next;
        }

    }
    public  void showlinkedNode(){
        linkedNode temp=head.next;
        while (temp!=null){
            System.out.println( temp.toString());
            temp=temp.next;

        }
    }


}
class linkedNode{
    public int no;
    public String name;
    public String nNickName;
    public linkedNode next;//指向下一个结点
    public linkedNode pre;//指向前一个结点
    //构造方法
    public linkedNode(int no,String name,String nNickName){
        this.name=name;
        this.no=no;
        this.nNickName=nNickName;
    }
   


    @Override
    public String toString() {
        return "Herolink{" +
                "no=" + no +
                ", name='" + name + ''' +
                ", nNickName='" + nNickName  + '''+
                '}';
    }
}
现代码如下
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号