我正在尝试按升序将新元素插入到链表中,我的代码用于输入3,1,9,7,5输出1,1,1,1,1,1但是我想要的输出是1,3,5,7,9
head实际上是类List的私有实例变量,这是一个成员函数
它被称为:
List a;
a.insertInOrder(3); a.insertInOrder(1); a.insertInOrder(9); a.insertInOrder(7); insertInOrder(5);
输出为1,1,1,1,1
void List::insertInOrder( int data) {
Node *newNode = new Node;
newNode->data=data;
if(head == null || head->data > data) {
newNode->next = head;
head = newNode;
}
else{
Node *cur = head;
while(cur->next != null && current->next->data < data)
cur = cur->next;
newNode->next = cur->next;
cur->next = newNode;
}
}
答案 0 :(得分:1)
似乎大多有效,但是:
while(cur->next != null && current->next->data < data)
这里你在一个子句中引用“cur”,在另一个子句中引用“current”。 “当前'似乎不存在,但也许你有全局变量?
但是,即使这样也会搞砸订单,所以我怀疑错误是在你的输出代码中,而不是你的排序代码。
答案 1 :(得分:-1)
您没有递增nextC
,因此您的while循环正在将data
与一个数字进行比较。 cur
没有做任何事情,因为您没有像条件nextC
那样在条件中使用它。
while(cur->next != null && nextC->data < data) //nextC->data is set only once
cur = cur->next; //cur incremented, but for what?