单链表的创建及增删改查的实现
创建一个链表节点类代码:
//创建英雄类(链表的每一个数据块) 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; } }
浙公网安备 33010602011771号