Реверс односвязного списка - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д