标签:bool string lis err private ext boolean null 顺序
/** * @author ZhiYi Li * @create 2020/8/25 11:37 * 带头节点的单链表 * 头节点不存放数据 */ //管理单链表 class SingleLinkedList { //初始化一个头节点 private final HeroNode head = new HeroNode(0,""); //添加节点到单项链表,无顺序添加 public void add(HeroNode heroNode){ HeroNode temp = head; while (temp.next!=null){ temp = temp.next; } temp.next = heroNode; } //按顺序添加,编号可重复 public void addNodeByNo(HeroNode heroNode){ HeroNode temp = head; while (temp.next != null&&temp.next.no <= heroNode.no) { temp = temp.next; } heroNode.next = temp.next; temp.next = heroNode; } //按顺序添加,编号不可重复 public void addNodeByNo2(HeroNode heroNode){ HeroNode temp = head; boolean flag = false; while (temp.next != null) { if(temp.next.no == heroNode.no){ flag = true; break; }else if(temp.next.no > heroNode.no){ break; } temp = temp.next; } if(flag){ System.out.println("数据编号重复!"); return; } heroNode.next = temp.next; temp.next = heroNode; } //根据编号修改节点的信息 public void update(HeroNode newHeroNode){ if(head.next == null){ System.out.println("链表为空!"); return; } HeroNode temp = head.next; while(temp!=null&&temp.no!=newHeroNode.no){ temp = temp.next; } if(temp!=null){ temp.name = newHeroNode.name; }else { System.out.println("节点不存在!"); } } //根据编号删除节点 public void deleteByNo(int no){ if(head.next==null){ System.out.println("链表为空!"); return; } HeroNode temp = head; while (temp.next!=null&&temp.next.no!=no){ temp = temp.next; } if(temp.next==null){ System.out.println("节点不存在!"); return; } temp.next = temp.next.next; } //根据编号显示节点 public HeroNode getNodeByNo(int no){ if(head.next==null){ System.out.println("链表为空!"); return null; } HeroNode temp = head; while (temp.next!=null&&temp.next.no!=no){ temp = temp.next; } if(temp.next==null){ System.out.println("节点不存在!"); return null; } return temp.next; } //查找第k个节点 public HeroNode getNode(int k){ if(head.next==null){ System.out.println("链表为空!"); return null; } HeroNode temp = head; int num = 1; while (num!=k){ temp = temp.next; num++; } return temp.next; } //删除单链表的第k个节点 public void deleteNo(int k){ if(head.next==null){ System.out.println("链表为空!"); return; } HeroNode temp = head; int num = 1; while (num!=k){ temp = temp.next; num++; } temp.next = temp.next.next; } //显示链表 public void show(){ HeroNode temp =head.next; if(temp == null){ System.out.println("链表无数据!"); } while (temp != null) { System.out.println(temp); temp = temp.next; } } } //数据结构 class HeroNode { public int no; public String name; public HeroNode next; public HeroNode(int no, String name) { this.no = no; this.name = name; } @Override public String toString() { return "HeroNode{" + "no=" + no + ", name=‘" + name + ‘\‘‘ + ‘}‘; } } //测试 public class SingleLinked { public static void main(String[] args) { SingleLinkedList linkedList =new SingleLinkedList(); linkedList.show(); linkedList.addNodeByNo2(new HeroNode(0,"张三")); linkedList.addNodeByNo2(new HeroNode(1,"李四")); linkedList.addNodeByNo2(new HeroNode(4,"王五")); linkedList.addNodeByNo2(new HeroNode(2,"赵六")); linkedList.addNodeByNo2(new HeroNode(2,"赵六")); linkedList.addNodeByNo2(new HeroNode(3,"吴七")); linkedList.addNodeByNo2(new HeroNode(2,"丽丽")); linkedList.show(); linkedList.update(new HeroNode(7,"莉莉")); linkedList.show(); linkedList.deleteByNo(4); linkedList.show(); linkedList.deleteNo(4); linkedList.show(); System.out.println(linkedList.getNodeByNo(2)); System.out.println(linkedList.getNode(2)); } }
标签:bool string lis err private ext boolean null 顺序
原文地址:https://www.cnblogs.com/lilice/p/13560665.html