Односвязный список на C#. Вставить первый элемент в конец
Формулировка задачи:
Добрый день всем! Заранее извиняюсь если вопрос нубский.
Стоит такая задача: есть односвязный список из произвольного количества элементов. Нужно написать метод, который в качестве параметра принимает этот список, ставит первый элемент вконец и возвращает ссылку на новый первый элемент.
Тоесть: дано A - > B - > C - > D - > нужно вернуть B - > C - > D - > A - > для произвольного кол-ва элементов списка.
Вот код:
И вот сама функция Sort():
Ну и еще хотелось бы знать решения такой задачи в общем виде:
Задача 2: Инвертирвать;
Задача 3: Вставить новый элемент всередину;
Заранее всем спасибо за ответы!
class ListNode { public ListNode Next { get; set; } public string Name { get; set; } public ListNode(string n) { Name = n; } public override string ToString() { return String.Format("[Node: {0}] ——> {1}", this.Name, this.Next); } }
class Program { static void Main(string[] args) { ListNode list = new ListNode("A"); list.Next = new ListNode("B"); list.Next.Next = new ListNode("C"); list.Next.Next.Next = new ListNode("D"); Console.WriteLine(list); Console.WriteLine(Sort(list)); } static ListNode Sort(ListNode node) { node = node.Next; // "B" с хвостом вначало втулил, но // дальше я хз как втулить в конец "А" return node; } }
Помню задачу немного похожую решал еще в школе на алгебре:
Вичислить значение выражения:
Так оно решалось составлением уравнения
Может тут нечто похожее можно придумать
Решение задачи: «Односвязный список на C#. Вставить первый элемент в конец»
textual
Листинг программы
static ListNode FirstToEnd(ListNode list) { if (list.Next == null) return list; ListNode result = list.Next, node; list.Next = null; for (node = result; node.Next != null; node = node.Next) ; node.Next = list; return result; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д