赞
踩
//定义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方法 @Override public String toString() { return "HeroNode{" + "no=" + no + ", name='" + name + '\'' + ", nickname='" + nickname + '\'' + '}'; } }
/定义SingleLikedList管理英雄
class SingleLikedList{
//先初始化头结点,固定不要动,不存放数据
private HeroNode head = new HeroNode(0,"","");
//显示链表【遍历】 public void list(){ //链表先判空 if (head.next == null){ System.out.println("链表为空"); return; } //添加一个辅助的节点temp,因为head节点不能动 HeroNode temp = head.next; while (true){ if (temp == null)break; //已经遍历完退出循环 System.out.println(temp); //输出链表信息 temp = temp.next; //继续遍历,temp后移一个节点 } }
//添加节点到单向链表,第二种方式有顺序,根据排名添加 public void addByOrder(HeroNode heroNode){ //添加一个辅助的节点temp,因为head节点不能动 //找到temp是位于添加位置的前一个节点,否则添加不了 HeroNode temp = head; boolean flag = false; //flag代表需要添加的节点是否存在,默认false while (true){ if (temp.next == null)break; //已经遍历完退出循环 if (temp.next.no > heroNode.no){ //位置找到,就在temp后面插入,temp的下一个节点和要添加的节点比较。 break; }else if (temp.next.no == heroNode.no){ flag = true; //代表需要添加的heroNode节点存在 break; } temp = temp.next; //继续遍历,temp后移一个节点 } //遍历完链表后判断flag的值 if (flag){ //不能添加,节点已经存在 System.out.printf("准备插入的英雄编号%d已经存在,不能加入\n",heroNode
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。