可以介绍一下创建链表类,或者其中的一些基本操作方法吗?
//初始化头节点,头节点不动
private HeroNode head = new HeroNode(0, "", "");
//返回头节点,方便后续操作
public HeroNode getHead() {
return head;
}
//添加节点内到单向链表
//思路,当不考虑编号顺序,找到当前链表的最后节点,将最后节点的next指向新节点
public void add(HeroNode heroNode) {
HeroNode temp = head;
//遍历链表,找到最后
while(true) {
if(temp.next == null) {
break;
}
//如果没有找到,将temp后移
temp = temp.next;
}
temp.next = heroNode;
}
//按照顺序添加
public void addByOrder(HeroNode heroNode) {
//头节点不能动,通过辅助指针
//单链表,因此temp在添加位置的前一个结点
HeroNode temp = head;
boolean flag = false; //编号是否存在
while(true) {
if(temp.next == null) {
//链表最后
break;
}
if(temp.next.no > heroNode.no) {
//位置找到
break;
}else if(temp.next.no == heroNode.no){
//编号存在
flag = true;
}
temp = temp.next;
}
if(flag) {
System.out.printf("编号%d存在", heroNode.no);
}else {
heroNode.next = temp.next;
temp.next = heroNode;
}
}
//更新链表,在找到序号的情况下进行更新
public void update(HeroNode newHeroNode) {
//根据no修改
if(head.next == null) {
System.out.println("链表为空");
return;
}
HeroNode temp = head.next;
boolean flag = false;
while(true) {
if(temp == null) {
break;
}
if(temp.no == newHeroNode.no) {
flag = true;
break;
}
temp = temp.next;
}
if(flag) {
temp.name = newHeroNode.name;
temp.nickname = newHeroNode.nickname;
}else {
System.out.printf("没找编号%d的值", newHeroNode.no);
}
}
//删除节点
//head不动,找到被删除节点的前一个
public void del(int no) {
HeroNode temp = head;
boolean flag = false;
while(true) {
if(temp.next == null) {
break;
}
if (temp.next.no == no) {
flag = true;
break;
}
temp = temp.next;
}
if(flag) {
temp.next = temp.next.next;
}else {
System.out.printf("要删除的节点%d不存在", no);
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。