单链表的创建及增删改查的实现

创建一个链表节点类代码:

//创建英雄类(链表的每一个数据块)
class HeroNode{
    private int no;
    private String name;
    private String nickName;
    public HeroNode next;
//无参构造
    public HeroNode() {
    }
//有参构造
    public HeroNode(int no, String name, String nickName) {
        this.no = no;
        this.name = name;
        this.nickName = nickName;
    }
//get与set方法
    public int getNo() {
        return no;
    }

    public String getName() {
        return name;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    //toString()方法重写,最后打印进行测试使用
    @Override
    public String toString() {
        return "HeroNode{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", nickName='" + nickName + '\'' +
                '}';
    }
}

创建链表,并实现增删改查方法:

//创建链表
class LinkedList{
//  创建头节点
    private HeroNode head = new HeroNode();

//  增加数据(直接在尾部进行添加)方法
    public void add(HeroNode heroNode){
//      定义一个临时的变量
        HeroNode temp = head;
//      定义死循环,找到最后的节点
        while (true){
            if (temp.next == null){
//              退出循环
                break;
            }
//          后移
            temp = temp.next;
        }
//      找到最后一个节点后,将数据进行添加
        temp.next = heroNode;
    }

//  有顺序地进行添加数据方法
    public void addOrderById(HeroNode heroNode){
        HeroNode temp = head;
        Boolean flag = false;
        while(true){
//          遍历到链表的最后
            if (temp.next == null){
                break;
            }
//          找到要插入的节点位置
            if (temp.next.getNo() > heroNode.getNo()){
                break;
            }else if (temp.next.getNo() == heroNode.getNo()){
                flag = true;
                break;
            }
            temp = temp.next;
        }
//      通过flag的状态来判定是否要进行添加
        if(flag){
            System.out.println("添加的节点已经存在了");

        }else {
            heroNode.next = temp.next;
            temp.next = heroNode;
        }
    }
// 修改数据 public void mod(HeroNode heroNode){ if (heroNode.next == null){ System.out.println("数据为空,无法进行修改"); return; } HeroNode temp = head.next; Boolean flag = false; while (true){ if (temp == null){ break; } if (temp.getNo() == heroNode.getNo()){ flag = true; break; } temp = temp.next; } if (flag){ temp.setName(heroNode.getName()); temp.setNickName(heroNode.getNickName()); }else{ System.out.println("没有数据进行修改"); } }
// 删除数据public void del(int no){ HeroNode temp = head; Boolean flag = false; while(true){ if (temp.next == null) { break; } if (temp.next.getNo() == no){ flag = true; break; } temp = temp.next; } if (flag){ temp.next = temp.next.next; }else { System.out.println("没有数据进行删除"); } } // 遍历链表数据 public void getLinkedList(){ HeroNode temp = head.next; if (temp == null) { System.out.println("链表为空"); }
// 遍历并且打印链表 while (true){ // 链表的终点 if (temp == null) { break; } System.out.println(temp); // 后移 temp = temp.next; } }

 

posted @ 2022-07-09 23:41  努力学习の小白  阅读(47)  评论(0)    收藏  举报
Live2D