//双向链表的按编号添加
//第二种方式在添加英雄时,根据排名将英雄插入到指定位置
//如果有这个排名,则添加失败,并给出提示
public void addByOrder(HeroNode2 heroNode) {
//因为头节点不能动,因此我们仍然通过一个辅助指针(变量)来帮助找到添加的位置
HeroNode2 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;
//防止空指针异常
if(temp.next != null) {
temp.next.pre = heroNode;
}
temp.next = heroNode;
heroNode.pre = temp;
}
}
双向链表的按编号添加
最新推荐文章于 2024-07-02 16:23:57 发布