Сегодня я приведу пример как можно реализовать стек с использованием языка программирования C#.
Для тех кто не знает, что такое стек (или список) — стек это способ хранения данных (некий аналог массива). При котором каждый новый элемент добавляется в начало списка и тем самым становится первым для извлечения. Простыми словами — стек это стакан, в который вы кладете объекты. Чем раньше вы положите объект в стакан, тем больше Вы его завалите при добавлении новых объектов. Так же, данный механизм можно описать фразой «Последний зашел — Первый вышел».
Первым делом нам понадобиться класс «обертка» для хранения элементов списка
class ListItem<T>
{
public T Data { get; private set; } //Данные для хранения
public ListItem<T> Next { get; set; } //Указатель на следующий элемент
public ListItem(T item)
{
this.Data = item;
}
}
А вот сам список. Заметим что класс ListItem описан внутри класса MyList. Делать это не обязательно, однако так сразу становиться понятно для класс ListItem вспомогательный класс для класса MyList.
class MyList<T>
{
class ListItem<T>
{
public T Data { get; private set; } //Данные для хранения
public ListItem<T> Next { get; set; } //Указатель на следующий элемент
public ListItem(T item)
{
this.Data = item;
}
}
public void PrintAll() //Печать всего списка
{
while (current != null)
{
Console.WriteLine(current.Data);
current = current.Next;
}
current = first;
}
public void Add(T item) //Добавление элемента в список
{
ListItem<T> I = new ListItem<T>(item);
if (first == null)
{
I.Next = null;
}
else
{
I.Next = first;
}
first = I;
current = I;
}
private ListItem<T> first;
private ListItem<T> current;
}
Пример использования
MyList<int> R = new MyList<int>(); R.AddBeforeFirst(1); R.AddBeforeFirst(2); R.AddBeforeFirst(3); R.AddBeforeFirst(4); R.AddBeforeFirst(5);