package DataStructure;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 86178
* Date: 2024-02-05
* Time: 21:25
*/
public class LinkedList {
public static void main(String[] args) {
HeroNode h1=new HeroNode(1,"宋江","及时雨");
HeroNode h2=new HeroNode(2,"卢俊义","玉麒麟");
HeroNode h3=new HeroNode(3,"吴用","智多星");
HeroNode h4=new HeroNode(4,"林冲","豹子头");
SingleList l=new SingleList();
l.addByOrder(h2);
l.addByOrder(h1);
l.addByOrder(h4);
l.addByOrder(h3);
//todo 提示编号3英雄已经存在 l.addByOrder(h3);
l.list();
}
}
class SingleList{
//todo (HeroNode)单链表
//初始化头节点
private HeroNode head=new HeroNode(0,"","");
//添加节点
//todo 不考虑英雄的编号顺序
public void add(HeroNode h){
HeroNode cur=head;
//todo 改变链表结构需要遍历至null的前一个节点,从而添加元素
while(cur.next!=null){
cur=cur.next;
//找到链表末尾
}
cur.next=h;
}
//todo 按照排名添加英雄 如果排名存在则添加失败,进行提示
public void addByOrder(HeroNode h){
boolean flag=false;
HeroNode cur=head;
while(true){
if(cur.next==null){
//说明到达链表末尾
break;
}else if(cur.next.no>h.no){
break;
}else if(cur.next.no==h.no){
//说明节点已经存在
flag=true;
break;
}
cur=cur.next;
}
if(flag){
System.out.printf("无法添加,%d编号已经存在",h.no);
}else{
h.next=cur.next;
cur.next=h;
}
}
public void list(){
if(head.next==null){
System.out.println("链表为空");
return;
}
//todo head不存放具体的数据,head指向链表的头节点
HeroNode cur=head.next;
while(cur!=null){
System.out.println(cur);
cur=cur.next;
}
System.out.print("null");
}
}
class HeroNode{
public int no;//编号
public String name;//名字
public String nickName;//昵称
public HeroNode next;
//指向下一个节点
//todo 构造器
public HeroNode(int no,String name,String nickName){
this.no=no;
this.name=name;
this.nickName=nickName;
}
//为了显示方便
@Override
public String toString(){
return "HeroNode[no="+no+",name="+name+",nickName="+nickName+"]";
}
}
尚硅谷Java数据结构--单链表(根据英雄编号添加节点)
最新推荐文章于 2024-10-16 10:13:45 发布
本文介绍了使用Java编写的单链表类SingleList,包含添加节点(不分顺序和按编号顺序)、按照编号顺序添加(若已存在提示)以及列表显示功能。示例中创建了一个英雄角色链表并演示了操作过程。
摘要由CSDN通过智能技术生成