//从双向链表中删除一个节点 //说明 //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); } }