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

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

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

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

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

textual
Листинг программы
static SinglyLinkedNode<string> Revers(SinglyLinkedNode<string> head) {
            SinglyLinkedNode<string> next0 = head.NextNode;
            head.NextNode = null;
            SinglyLinkedNode<string> next1 = next0.NextNode;
            next0.NextNode = head;
            do {
                head = next0;
                next0 = next1;
                next1 = next0.NextNode;
                next0.NextNode = head;
            } while (next1 != null);
            return next0;
        }
public class SinglyLinkedNode<T> where T : class {
        SinglyLinkedNode<T> nextNode;
 
        public SinglyLinkedNode<T> NextNode { get { return nextNode; } set { nextNode = value; } }
        public T Value { get; set; }
 
        public void AddAfter(SinglyLinkedNode<T> node) {
            if (node != null) {
                SinglyLinkedNode<T> currentNext = nextNode;
                nextNode = node;
                if (currentNext != null)
                    node.AddAfter(currentNext);
            }
        }
    }

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


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

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

10   голосов , оценка 4.2 из 5
Похожие ответы