//定义SingleLinkList管理英雄
class SingleLinkList{
//初始化头节点,头节点不动,不存放数据
private HeroNode head=new HeroNode(0,"","")//不存放数据
//添加节点到单向链表
//当不考虑编号的顺序时
//1.找出当前链表的最后节点
//2.将最后这个节点的next指向新的节点
public void add(HeroNode heronode){
//因为head节点不能动,因此我们需要一个辅助变量temp
HeroNode 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;
}//头节点的下一个节点为空,所以结束循环
//因为头节点不动,因此需要一个辅助变量来遍历
HeroNode temp=head.next;
while(true){
//判断链表是否到最后
if(temp==null){
break;
}
//输出节点信息
System.out.println(temp);
//将temp后移,!!!!
//进行下一个节点的判断
temp=temp.next;
}
}
}
//定义一个HeroNode,每个HeroNode对象就是一个节点
class HeroNode{
public int no;//代表编号
public String name;//代表名字
public String nickname;//代表昵称
public HeroNode next;//指向下一个节点
//构造器
public HeroNode(int hNo,String hName,String hNickname){
this.no=hNo;
this.name=hName;
this.nickname=hNickname;
}
//为了显示方便,重写tostring方法
@Override
public String toString() {
return "HeroNode{" +
"no=" + no +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}
}
//进行测试
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(hero2);
singleLinkedList.add(hero3);
singleLinkedList.add(hero4);
//显示
singleLinkedList.list();
}
}