Сегодня я приведу пример как можно реализовать стек с использованием языка программирования 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);