Программа на C для переупорядочения связанного списка таким образом, чтобы все четные и нечетные узлы были вместе

Опубликовано: 18 Сентября, 2022

Перестройте связанный список таким образом, чтобы все узлы нечетных позиций были вместе, а все узлы четных позиций были вместе,
Примеры:

Input:   1->2->3->4
Output:  1->3->2->4

Input:   10->22->30->43->56->70
Output:  10->30->56->22->43->70

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

  1. Пустой связанный список.
  2. Связный список только с одним узлом.
  3. Связный список только с двумя узлами.
  4. Связный список с нечетным числом узлов.
  5. Связный список с четным числом узлов.

Приведенная ниже программа поддерживает два указателя «нечетный» и «четный» для текущих узлов в нечетных и четных позициях соответственно. Мы также сохраняем первый узел четного связанного списка, чтобы мы могли присоединить четный список в конце нечетного списка после того, как все нечетные и четные узлы будут соединены вместе в двух разных списках.

Выход:

Given Linked List
1->2->3->4->5->NULL
Modified Linked List
1->3->5->2->4->NULL

Временная сложность: O(n), где n — количество узлов в данном связанном списке.
Вспомогательное пространство: O(1), дополнительное пространство не требуется, поэтому это константа.

Пожалуйста, обратитесь к полной статье о Изменить связанный список, чтобы все четные и нечетные узлы были вместе для получения более подробной информации!

РЕКОМЕНДУЕМЫЕ СТАТЬИ