//从双向链表中删除一个节点
//说明
//1.对于双向链表,我们可以直接找到要删除的这个节点
//2.找到后,自我删除即可
public void delete(int no) {
HeroNode3 temp = head.next;
boolean flag = false;//标志是否找到待删除的节点
//判断是否为空
if (head.next == null) {
System.out.println("链表为空,无法删除~");
return;
}
while (true) {
if (temp == null) {
break;
}
if (temp.no == no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.per.next = temp.next;
//这里的代码有点问题,小bug !
//如果是删除的最后一个节点,就不需要执行下面这句话,否则就会出现空指针异常
// temp.next.per = temp.per;
//改进,加入判断
if (temp.next != null) {
temp.next.per = temp.per;
}
} else {
System.out.printf("没有找到你要删除的%d号英雄\n", no);
}
}