Реверс односвязного списка - C#

Узнай цену своей работы

Формулировка задачи:

Есть список
Листинг программы
  1. new MyNode(1){Next = new MyNode(2) {Next = new MyNode(3) {Next = new MyNode(4) {Next = new MyNode(5)}}}};
и есть функция Реверса, то есть первый элемент становиться последним и т.д.
Листинг программы
  1. private static void RecursiveReverse(ref MyNode list)
  2. {
  3. MyNode first;
  4. MyNode rest;
  5. if (list == null) return;
  6. first = list;
  7. rest = first.Next;
  8. if (rest==null)
  9. {
  10. return;
  11. }
  12. RecursiveReverse(ref rest);
  13. first.Next.Next = first;
  14. first.Next = null;
  15. list = rest;
  16. }
Функция работает, но вопрос в том, что она делает,я ни как не могу понять каким образом она его переворачивает. Помогите, пожалуйста, разобраться)

Решение задачи: «Реверс односвязного списка»

textual
Листинг программы
  1. static SinglyLinkedNode<string> Revers(SinglyLinkedNode<string> head) {
  2.             SinglyLinkedNode<string> next0 = head.NextNode;
  3.             head.NextNode = null;
  4.             SinglyLinkedNode<string> next1 = next0.NextNode;
  5.             next0.NextNode = head;
  6.             do {
  7.                 head = next0;
  8.                 next0 = next1;
  9.                 next1 = next0.NextNode;
  10.                 next0.NextNode = head;
  11.             } while (next1 != null);
  12.             return next0;
  13.         }
  14. public class SinglyLinkedNode<T> where T : class {
  15.         SinglyLinkedNode<T> nextNode;
  16.  
  17.         public SinglyLinkedNode<T> NextNode { get { return nextNode; } set { nextNode = value; } }
  18.         public T Value { get; set; }
  19.  
  20.         public void AddAfter(SinglyLinkedNode<T> node) {
  21.             if (node != null) {
  22.                 SinglyLinkedNode<T> currentNext = nextNode;
  23.                 nextNode = node;
  24.                 if (currentNext != null)
  25.                     node.AddAfter(currentNext);
  26.             }
  27.         }
  28.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы