单向链表第二种添加方式:
按照排名将节点插入指定位置,如果指定位置有节点,就提示添加失败!
需要按照编号的顺序添加
- 首先找到新添加节点的位置,通过辅助变量,遍历来搞定
- 新的节点.next = temp.next
- 将temp.next = 新的节点
//第二种方式插入节点
//按照英雄排名插入到指定位置,如果有这个排名,则提示插入失败
public void addNode2(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){ //位置已找到
break;
}else if(temp.next.no == heroNode.no){ //说明要添加的heroNode的no已存在于链表中
flag = true; //说明编号存在
break;
}
temp = temp.next; //后移,遍历当前链表
}
if(flag){ //如果flag为真,则说明heroNode.no已存在,打印提示信息
System.out.println("添加失败!此英雄的编号"+heroNode.no+"存在");
}else{
//插入到链表中,temp后面
heroNode.next = temp.next;
temp.next = heroNode;
}
测试: