вставка целого числа в связанный список в порядке возрастания

0

Я пытаюсь вставить новый элемент в связанный список в порядке возрастания, мой код для ввода 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;
              } 
         }
  • 1
    В чем вопрос? Я вижу две проблемы: 1. данные не сохраняются в списке - потому что они не назначены для newNode-> data 2. Если вы хотите отсортированный связанный список, почему вы всегда проверяете «данные» по сравнению со «nextC» вместо «cur» ?
  • 0
    @VladimirM спасибо за этот улов, я изменил его на current-> next-> data, но вывод остался прежним. Я удалил nextC
Показать ещё 5 комментариев
Теги:
linked-list

2 ответа

1

Кажется, в основном действительны, но:

       while(cur->next != null && current->next->data < data)

Здесь вы ссылаетесь на "cur" в одном пункте и "current" в другом предложении. "current", похоже, не существует, но, возможно, у вас есть глобальные переменные?

Но даже это просто испортило бы заказ, поэтому я подозреваю, что ошибка в вашем выходном коде, а не ваш код сортировки.

-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?
  • 0
    Я обновил цикл while, однако результат остался прежним

Ещё вопросы

Сообщество Overcoder
Наверх
Меню