struct() первое число больше второго

#c

#c

Вопрос:

Итак, я создал функцию удаления для своего списка. Как я могу создать функцию, которая проверяет —

Если первое число списка больше следующего, если да, то удаляет его и перемещает обратно?

Input : 1 3 4 2 4 5 2 1 33

Output: 1 3 2 4 5 1 33

 void remove(node *amp;head, node *amp;last){
    if(isempty(head)){
        cout << " Saraksts ir tuksh!"<<endl;    
    } else if (head ==last) {
        delete head;
        head == NULL;
        last == NULL;
    } else {
        node * temp = head;
        head = head->next;
        delete temp;
    }
}
  

Комментарии:

1. Исправлены отступы и некоторые формулировки. Примечание — Добавлены закрывающие фигурные скобки.

2. Непонятно, что вы пытаетесь сделать, во вводимом первом списке есть номер 1 , который не больше следующего (который есть 3 ), но все равно номер удаляется из списка. Почему это произошло?

3. head == NULL; должно быть head = NULL; , то же самое для last .

Ответ №1:

Для односвязных списков вы должны поддерживать указатель на предыдущий узел. Таким образом, вы можете сравнить данные предыдущего узла с текущим (текущим узлом).

Чтобы изменить порядок, поменяйте местами поля ссылок.

Я рекомендую всегда рисовать изображения узлов при работе со связанными списками, что-то вроде:

  ---       ---       ---   
| 5 | --> | 6 | --> | 7 |  
 ---       ---       ---