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

链表的实现,增删改

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

链表的实现,增删改

package com.zhen.linkedlist;

public class SinglelinkedListDemo {
    public static void main(String[] args) {
        Heronode heroNode1 = new Heronode(1, "宋江", "及时雨");
        Heronode heroNode2 = new Heronode(2, "卢俊义", "玉麒麟");
        Heronode heroNode3 = new Heronode(3, "吴用", "智多星");
        Heronode heroNode4 = new Heronode(4, "林冲", "豹子头");
        Heronode heroNode5 = new Heronode(1, "李逵", "黑旋风");
        SingleLickedList singleLickedList = new SingleLickedList();
        singleLickedList.addByOrder(heroNode1);
        singleLickedList.addByOrder(heroNode2);
        singleLickedList.addByOrder(heroNode4);
        singleLickedList.addByOrder(heroNode3);
        singleLickedList.showNode();
        System.out.println("删除之后的是:");
        singleLickedList.deleteNode(heroNode5);
        singleLickedList.showNode();
    }
}
//有头结点的链表,头结点不存放任何的数据,作用就是单链表的头
//定义一个SingleLickedList,管理英雄
class SingleLickedList{
    private Heronode head=new Heronode(0,"","");
    //添加结点到单向链表,在不考虑编号顺序时,先找到当前链表的最后一个结点,将最后这个结点的next指向新添的结点
    public void addNode(Heronode heroNode){
        //head结点不能动,需要一个辅助结点temp
        Heronode temp=head;
        while (true){
            if(temp.next==null) break;
            temp=temp.next;
        }
        temp.next=heroNode;
    }
    //按照顺序插入
    public void addByOrder(Heronode heroNode){
        //头结点不能动,需要一个辅助结点temp
        //因为是单链表,因此找的temp位于要添加位置的前一个结点
        Heronode temp=head;
        boolean flag=false;
        while (true){
            if (temp.next==null) break;
            else if(temp.next.no>heroNode.no){
                break;
            }
            else if(temp.next.no== heroNode.no){
                flag=true;
                break;
            }
            temp=temp.next;
        }
        if(flag){
            System.out.printf("编号为%d的英雄已经存在n",temp.next.no);
        }
        else{
            heroNode.next=temp.next;
            temp.next=heroNode;
        }
    }
    //更新链表,根据编号no来修改nickName
    public void update(Heronode newHeroNode){
        if(head.next==null){
            System.out.println("链表为空");
            return;
        }
        Heronode temp=head;
        boolean flag=false;
        while (true){
            if (temp.next==null){
                flag=true;
                break;
            }
            else if(temp.next.no== newHeroNode.no){
                break;
            }
            temp=temp.next;
        }
        if(flag){
            System.out.println("所修改的英雄的编号不存在");
        }
        else{
            temp.next.nickName= newHeroNode.nickName;
            temp.next.name= newHeroNode.name;
        }
    }
    //按照编号no删除
    public void deleteNode(Heronode heroNode){
        if (head.next==null){
            System.out.println("链表为空,无法删除");
            return;
        }
        Heronode temp=head;
        boolean flag=false;
        while (true){
            if(temp.next==null){
                flag=true;
                break;
            }
            else if (temp.next.no==heroNode.no){
                break;
            }
            temp=temp.next;
        }
        if(flag){
            System.out.println("没有找到此编号");
        }else{
            temp.next=temp.next.next;
        }
    }
    public void showNode(){
        //先判断链表是否为空
        if(head.next==null){
            System.out.println("链表为空,无法打印");
            return;
        }
        Heronode temp=head.next;
        while (true){
            if (temp==null) break;
            System.out.println(temp.toString());
            temp=temp.next;
        }
    }
}

class HeroNode{
    public int no;
    public String name;
    public String nickName;
    public Heronode next;//指向下一个结点,简单理解就是赋值,这个结点的next就是下一个结点的值

    public Heronode(int no, String name, String nickName) {
        this.no = no;
        this.name = name;
        this.nickName = nickName;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "no=" + no +
                ", name='" + name + ''' +
                ", nickName='" + nickName + '''+"}";
    }
}

根据尚硅谷的数据结构与算法实现,用于复习

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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