双向链表有序添加的实现
public void addByOrder(HeroNode2 node) {
HeroNode2 temp = head;
//头节点的情况此时链表没有数据所以直接插入就好
if (head.next == null) {
head.next = node;
node.pre = head;
//直接结束掉此方法
return;
}
//这个标记为标记是否在元素最后插入还是在中间插入
boolean flag = false;
//这里的temp是所插入元素的前节点
while (temp.next != null) {
if (temp.next.no >= node.no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
node.pre = temp;
node.next = temp.next;
temp.next.pre = node;
temp.next = node;
} else {
temp.next = node;
node.pre = temp;
}
}