单链表的按顺序插入,修改,删除,查找与展示。整个代码在最后,gitee地址:java数据结构与算法: 自己学习与练习数据结构的仓库https://gitee.com/ALi_L/javaDataStructurs.git
链表操作的核心是:
1.有了头结点,整个链表就都知道了。
2.插入节点要把前一个节点断开,新节点指向后一个节点
因此对于链表问题,就是要把头结点赋值给中间变量,用中间变量来进行操作,可以保证原链表不修改。如果直接用头结点head来修改链表就会破坏原链表。
说明:
class HeroNode是节点类,定义了节点的属性和方法,重写toString 方法是为了打印节点。
/**
* 节点类
*/
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 + '\'' +
'}';
}
}
class SingleLinkedList是链表管理类,链表的相关操作都在这个类里。
/**
* SingleLinkedList is Administration List
*/
class SingleLinkedList{
//创建头结点,不存数据
private HeroNode head = new HeroNode(0,"","");
/**
* 增加新节点
* @param node 新节点node
*/
public void add(HeroNode node){
//创建临时节点,用它来代替原来的头结点,保证原来的链表是不变的。单链表有了