修改节点
1.先找到该节点,通过遍历
2.temp.name = newHeroNode.name; temp.nickname = newHeroNode.nickname;
代码如下:
//修改节点的信息,根据no编号来修改,即no编号不能改
public void update(HeroNode newHeroNode){
if (head.next == null){
System.out.println("链表为空!!");
}
boolean flag = false;
HeroNode temp = head.next;
while (true){
if (temp == null){//遍历完所有节点
break;
}else 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的节点,修改失败\n",newHeroNode.no);
}
}
删除节点
从单链表删除一个节点的思路
1.我们先找到需要删除的这个节点的前一个节点temp
2.temp.next = temp.next.next
3.被删除的节点,将不会有其他引用指向,会被垃圾回收机制回收
删除节点示意图:
删除代码如下:
//删除节点
//1.head不能动,因此我们需要一个temp辅助节点找到删除节点的前一个节点
//2.说明我们在比较时,是temp.next.no 和需要的删除的节点的no比较
public void del(int no){
HeroNode temp = head;
boolean flag = false;
while (true){
if (temp.next == null){
//没有找到要删除的节点
break;
}else if (temp.next.no == no){
//找到待删除的节点的前一个节点
flag = true;
break;
}
temp = temp.next;
}
if (flag){
temp.next = temp.next.next;
}else {
System.out.printf("该节点不存在%d,删除失败\n",no);
}
}
单链表基础知识完了,下面就是实战演练(见下一章)
ps:以上笔记均来自尚硅谷韩顺平老师《Java数据结构与java算法》