ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

单链表之实现(以及增删改查)

2021-05-23 15:04:43  阅读:169  来源: 互联网

标签:temp HeroNode 改查 next 链表 表之 增删 节点 id


 

 

//节点类(jdk源码中的Node)
class HeroNode{

    //这里方便调用,把属性定义为public,一般不允许
    public int id;

    public String name;

    public String nickName;

    //下一节点的指针
    public HeroNode next;

    public HeroNode(int id, String name, String nickName) {
        this.id = id;
        this.name = name;
        this.nickName = nickName;
    }

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

上面代码为自定义的一个节点类,由上图可知单向链表的逻辑关系图

//单链表类
class SingleLinkList{

    //创建链表时先初始化一个头节点,这个头节点不放任何数据,用来指名这个链表的存在
    private HeroNode head = new HeroNode(0,"","");

    //往单链表中添加节点
    public void add(HeroNode heroNode){
        //需要遍历节点,找出next==null的尾节点。
        HeroNode temp = head;
        while(true){
            if(temp.next ==null){
                break;
            }
            temp = temp.next;
        }
        temp.next = heroNode;
    }
}

以上代码仅仅为往链表中插入节点数据

  //往单链表中顺序插入
    public void addByOrder(HeroNode heroNode){
        //需要遍历节点,找出next==null的尾节点。
        HeroNode temp = head;
        boolean flag = false; //这是一个标记位,用来指示
        while(true){//这就是一个遍历的过程
            if(temp.next ==null){ //说明temp已经是链表的最后了。这段逻辑判断必须放在第一位,可以有效防止空指针
                break;
            }
            if(temp.next.id>heroNode.id){
                break;
            }else if(temp.next.id == heroNode.id){ //这里必须要用下一个节点去判断,【如果是空链表,这时会报空指针】
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if(flag){
            System.out.printf("当前链表中需要加入的节点已经存在,节点id为:%d\n",heroNode.id);
        }else{
            heroNode.next=temp.next; //指向节点改变
            temp.next = heroNode;
        }

    }

 

 

以上为节点排序插入(边插边排序)

  //修改节点
    public void updateNode(HeroNode newHeroNode){
        if(head.next ==null){
            System.out.println("链表为空");
            return;
        }
        HeroNode temp = head;
        boolean flag = false;
        while(true){
            if(temp.next==null){
                break;
            }
            if(temp.next.id == newHeroNode.id){
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if(flag){
            temp.next.name = newHeroNode.name;
            temp.next.nickName = newHeroNode.nickName;
        }else{
            System.out.printf("未找到id为%d的节点\n",newHeroNode.id);
        }

    }

以上为修改节点

  //删除节点
    public void delNode(int id){
        if(head.next ==null){
            System.out.println("链表为空");
            return;
        }
        HeroNode temp = head;
        boolean flag = false;
        while(true){
            if(temp.next ==null){
                break;
            }
            if(temp.next.id == id){
                flag = true;
                break;
            }
            temp= temp.next;
        }
        if(flag){
            temp.next = temp.next.next;
        }else{
            System.out.printf("未找到id为%d的节点\n",id);
        }
    }

以上为删除节点

    //遍历链表
    public void showList(){
        //判断链表是否为空
        if(head.next ==null){
            System.out.println("链表为空");
            return;
        }
        HeroNode temp = head.next;
        while (true){
            if(temp == null){
                break;
            }
            System.out.println(temp);
            temp = temp.next;
        }


    }

以上为遍历链表

标签:temp,HeroNode,改查,next,链表,表之,增删,节点,id
来源: https://www.cnblogs.com/Theozhu/p/14801156.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有