2016-10-17 5 views
-1

Итак, я сделал функцию удаления для своего списка. Как я могу выполнить функцию, которая проверяет -struct() первое число больше, чем secound

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

Input : 1 3 4 2 4 5 2 1 33

Output: 1 3 2 4 5 1 33

void remove(node *&head, node *&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; 
    } 
} 
+0

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

+0

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

+0

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

ответ

0

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

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

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

+---+  +---+  +---+ 
| 5 | --> | 6 | --> | 7 | 
+---+  +---+  +---+ 
Смежные вопросы