Односвязный список реализовать с помощью структур - C#
Формулировка задачи:
Здравствуйте . Помогите,пожалуйста, разобраться с односвязным списком . Раньше немного учил С++ и там списки реализовывались с помощью структур . Попытался тоже самое реализовать на С# - не получается.
Объясните , пожалуйста , как хотя бы правильно создавать список и добавлять в него элемент ?
Понимаю, что у каждого узла есть данные и указатель на следующий подобный узел. Только как это всё дело в C# реализовать-то ..
Только не пишите о встроенных функциях для реализации , мне сейчас нужно разобраться как вручную всё это делается.
Буду очень благодарен Вам !!!
class Program
{
//структура узла
public struct Element
{
public int value;// данные
public Element* next;// указатель на следующий элемент списка
}*start, *p ;//указатели на начало и текущий элемент
static void CreateList(int a)
{
p = new Element(); //создали элемент
p->value = a; //присвоили значение
p->next = null; //так как один элемент , то указатель на след.элемент == null
start = p;
}
static void Main(string[] args)
{
int a;
Console.WriteLine("введите значение для 1-го элемента списка:");
a = int.Parse(Console.ReadLine());
CreateList(a);
}
}Решение задачи: «Односвязный список реализовать с помощью структур»
textual
Листинг программы
class OwnList {
class OwnListElem
{
public OwnListElem Next { get; set; }
public int Value { get; set; }
public OwnListElem (OwnListElem next, int value)
{
Next = next;
Value = value;
}
}
private OwnListElem _head = null;
private OwnListElem _tail = null;
public OwnList() {}
public void Add(int value)
{
OwnListElem temp = new OwnListElem(null, value);
if (_head == null)
{
_head = _tail = temp;
_head.Next = _tail;
}
else
{
_tail.Next = temp;
_tail = temp;
}
}
public void Print()
{
OwnListElem temp = _head;
while(temp != null)
{
Console.WriteLine(temp.Value);
temp = temp.Next;
}
}
}
public static void Main(string[] args)
{
OwnList list = new OwnList();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
list.Print();
Console.ReadKey();
}