Односвязный список на C#. Вставить первый элемент в конец

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

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

Добрый день всем! Заранее извиняюсь если вопрос нубский. Стоит такая задача: есть односвязный список из произвольного количества элементов. Нужно написать метод, который в качестве параметра принимает этот список, ставит первый элемент вконец и возвращает ссылку на новый первый элемент. Тоесть: дано A - > B - > C - > D - > нужно вернуть B - > C - > D - > A - > для произвольного кол-ва элементов списка. Вот код:
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);
    }
}
И вот сама функция Sort():
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;
    }
}
Ну и еще хотелось бы знать решения такой задачи в общем виде: Задача 2: Инвертирвать; Задача 3: Вставить новый элемент всередину; Заранее всем спасибо за ответы!
Помню задачу немного похожую решал еще в школе на алгебре: Вичислить значение выражения: Так оно решалось составлением уравнения Может тут нечто похожее можно придумать

Решение задачи: «Односвязный список на 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;
}

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


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

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

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