使用带head头的单向链表实现 - 水浒英雄排行榜管理完成对英雄任务的CRUD操作。
第一种方法在添加英雄时,直接添加到链表尾部
思路分析示意图:

链表版本1.0,只能插入数据
package com.atguigu.linkedlist;/*** 单向链表* @author Dxkstart* @create 2021-09-30-15:35*/public class SingleLinkedListDemo {public static void main(String[] args) {//进行测试//先创建节点HeroNode hero1 = new HeroNode(1, "宋江", "及时雨");HeroNode hero2 = new HeroNode(2, "卢俊义", "玉麒麟");HeroNode hero3 = new HeroNode(3, "吴用", "智多星");HeroNode hero4 = new HeroNode(4, "林冲", "豹子头");//先创建一个链表SingleLinkedList singleLinkedList = new SingleLinkedList();//加入singleLinkedList.add(hero1);singleLinkedList.add(hero4);singleLinkedList.add(hero3);singleLinkedList.add(hero2);//显示链表singleLinkedList.list();}}//定义HeroNode,每个HeroNode对象就是一个节点class HeroNode{public int no;public String name;public String nickname;public HeroNode next;//指向下一个节点,“链”//构造器public HeroNode(int no,String name,String nickname){this.no = no;this.name = name;this.nickname = nickname;}//为了显示方便,重写toString()方法@Overridepublic String toString() {return "HeroNode{" +"no=" + no +", name='" + name + '\'' +", nickname='" + nickname +'}';}}//定义SingleLinkedList管理我们的英雄class SingleLinkedList{//先初始化一个头结点,头结点不要动,不存放具体的数据private HeroNode head = new HeroNode(0,"","");//添加节点到单向链表//思路:当不考虑编号顺序时//1.找到当前链表的最后节点//2.将最后这个节点的next指向新的节点public void add(HeroNode heroNode){//因为head节点不能动,因此我们需要一个辅助变量tempHeroNode temp = head;//遍历链表,找到最后while(true){//找到链表的最后if (temp.next == null){break;}//如果没有找到,把temp后移temp = temp.next;}//当退出while循环时,temp就指向了链表的最后//将最后这个节点的next指向新的节点temp.next = heroNode;}//显示链表[遍历]public void list(){if (head.next == null){System.out.println("链表为空!");return;}//头结点不能动,所以使用temp临时变量HeroNode temp = head;while (true){//判断是否到链表的最后了if (temp.next == null){break;}//输出节点信息System.out.println(temp.next);//将temp后移,不然是个死循环temp = temp.next;}}}
