Я пытаюсь вставить новый элемент в связанный список в порядке возрастания, мой код для ввода 3,1,9,7,5 выходов 1,1,1,1,1,1, однако выход, который я хочу, равен 1, 3,5,7,9
head фактически находится в переменной частного экземпляра для списка классов, и это функция-член
Он называется:
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;
}
}
Кажется, в основном действительны, но:
while(cur->next != null && current->next->data < data)
Здесь вы ссылаетесь на "cur" в одном пункте и "current" в другом предложении. "current", похоже, не существует, но, возможно, у вас есть глобальные переменные?
Но даже это просто испортило бы заказ, поэтому я подозреваю, что ошибка в вашем выходном коде, а не ваш код сортировки.
Вы не увеличиваете 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?