今天无意间翻开了数据结构,忽然扫到了双向链表,就想着重新把代码码一遍练练手。三两分钟就写完了,运行时就尴尬了。发现没有输出。
于是我就debug了一下,就发现,每次插入的元素的pre竟然是元素本身经过调试后,发现pre为空,我意识到得重新把逻辑理一遍,于是稍作修改,测试通过:
//按顺序插入元素
public void addOrder(Hero hero){
Hero temp = head;
boolean flag = false;
boolean flag1 = false;
while(true){
if(temp.next == null){//判断插入的元素是否是最后一个元素
flag1 = true;
break;
}
if(temp.next.no == hero.no){//判断元素是否已存在
flag = true;
break;
}else if(hero.no<temp.next.no){
break;
}
temp = temp.next;
}
if(flag){
System.out.println("元素已存在");
}else if(flag1){
//在temp后面插入
hero.next = temp.next;
temp.next = hero;
hero.pre = temp;
flag1 = false;
}else{//在temp后面插入
hero.next = temp.next;
temp.next.pre = hero;
temp.next = hero;
hero.pre = temp;
}
}
欢迎各位大佬继续指正。