我有一个整数链表。当我插入一个新的节点我需要插入它不是在最后,但在奥德...即2,4,5,8,11,12,33,55,58,102等我不认为我将它插入正确的位置。看看我做错了什么?
Node newNode = new Node(someInt);
Node current = head;
for(int i=0; i<count; i++){
if(current == tail && tail.data < someInt){
tail.next = newNode;
}
if(current.data < someInt && current.next.data >= someInt){
newNode.next = current.next;
current.next = newNode;
}
}
答案 0 :(得分:4)
我认为这可能更接近您所寻找的目标。
Node newNode = new Node(someInt);
Node current = head;
//check head first
if (current.data > newNode.data) {
newNode.next = head;
head = newNode;
}
//check body
else {
while(true){
if(current == tail){
current.next = newNode;
tail = newNode;
break;
}
if(current.data < someInt && current.next.data >= someInt){
newNode.next = current.next;
current.next = newNode;
break;
}
current = current.next;
}
}
答案 1 :(得分:2)
你永远不会在名单上前进。你需要一个其他的设置:
current = current.next
您还可以在插入节点后添加break语句,因为此时您已完成循环。
答案 2 :(得分:1)
看起来你没有更新current
...尝试在你的循环中插入这样的东西:
current = current.next;
答案 3 :(得分:0)
当新元素小于所有现有元素时,看起来你错过了这种情况。