Не рекурсивный метод добавления нового элемента n-ым в список - C#

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

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

Ничего не работает. И вообще не уверен в правильности. Не понимаю, как вставлять, вместо чего.
using System;
 
namespace Лаба_2
{
    class Program
    {
        static void Main(string[] args)
        {
            RList list = new RList(1, null);
            list = new RList(2, list);
            list = new RList(3, list);
            list.AddElByIndex(4, 4);
            do
            {
                Console.WriteLine(list.info);
                list = list.next;
            }
            while (list != null);
        }
    }
    class RList
    {
        public int info;
        public RList next;
        public RList(int i, RList n)
        {
            info = i;
            next = n;
        }
 
        public void AddElByIndex(int a, int index)
        {
            int count = 0;
            RList el = this;
            while (el.next != null)
            {
                count++;
                if (count == index)
                {
                    el = new RList(a, null);
                    break;
                }
                el = el.next;   
            }
        }
    }
}

Решение задачи: «Не рекурсивный метод добавления нового элемента n-ым в список»

textual
Листинг программы
class Program
{
    static void Main()
    {
        var list = new RList();
        list.Add(11);
        list.Add(13);
        list.Add(15);
        Console.Write("после add:    ");
        Console.WriteLine(list);
        list.Insert(0, 10);
        list.Insert(2, 12);
        list.Insert(4, 14);
        Console.Write("после insert: ");
        Console.WriteLine(list);
        Console.ReadLine();
    }
}
 
class RListItem
{
    public int Value;
    public RListItem Next;
 
    public RListItem(int Value = 0, RListItem Next = null)
    {
        this.Value = Value;
        this.Next = Next;
    }
}
 
class RList
{
    private RListItem Root = new RListItem();
 
    // Добавляет в конец
    public void Add(int Value)
    {
        Insert(int.MaxValue, Value);
    }
 
    // Вставляет перед элементом под номером Index
    public void Insert(int Index, int Value)
    {
        var node = Root;
        while (Index-- > 0 && node.Next != null)
            node = node.Next;
        node.Next = new RListItem(Value, node.Next);
    }
 
    public override string ToString()
    {
        var sb = new StringBuilder();
        var node = Root.Next;
        while (node != null)
        {
            sb.Append(node.Value);
            sb.Append(" ");
            node = node.Next;
        }
 
        return sb.ToString();
    }
}

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


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

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

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