Не рекурсивный метод добавления нового элемента 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();
}
}