链表基础的增删改
插入
按照大小进行排序添加-

public void addByOrder(HeroNode heroNode) {
//因为头节点不能动,因此我们仍然通过一个辅助指针(变量)来帮助找到添加的位置
//因为单链表,因为我们找的temp 是位于 添加位置的前一个节点,否则插入不了
HeroNode temp = head;
boolean flag = false; // flag标志添加的编号是否存在,默认为false
while(true) {
if(temp.next == null) {//说明temp已经在链表的最后
break; //
}
if(temp.next.no > heroNode.no) { //位置找到,就在temp的后面插入
break;
} else if (temp.next.no == heroNode.no) {//说明希望添加的heroNode的编号已然存在
flag = true; //说明编号存在
break;
}
temp = temp.next; //后移,遍历当前链表
}
//判断flag 的值
if(flag) { //不能添加,说明编号存在
System.out.printf("准备插入的编号 %d 已经存在了, 不能加入\n", heroNode.no);
} else {
//插入到链表中, temp的后面
heroNode.next = temp.next;
temp.next = heroNode;
}
}
追加-末尾

void add(HerNode herNode){
HerNode htemp=head;
while(htemp.next!=null){
htemp=htemp.next;
}
htemp.next=herNode;
}
修改
void update(HerNode newHerNode){
if(head.next==null){
System.out.println("链表为空");
return;
}
HerNode htemp=head.next;
boolean flag=false;//表示是否找到了默认为false
while (htemp!=null){
if(htemp.no== newHerNode.no){
flag=true;
break;
}
htemp=htemp.next;
}
if(flag){
htemp.name= newHerNode.name;
htemp.nickname= newHerNode.nickname;
}else{
System.out.printf("没有找到编号%d的",newHerNode.no);
}
}
删除

void delete(int no){
if(head.next==null){
System.out.println("链表为空");
return;
}
HerNode htemp=head;
boolean flag=false;//表示是否找到了默认为false
while(htemp.next!=null){
if(htemp.next.no==no){
flag=true;
break;
}
htemp=htemp.next;
}
if(flag){
htemp.next = htemp.next.next;
}else{
System.out.printf("要删除的 %d 节点不存在\n", no);
}
}

浙公网安备 33010602011771号