Стеком називається така структура даних, у якій додавання нового елемента або видалення елемента можливе лише з одного кінця, який називається вершиною стеку.
Стек працює за принципом LIFO (Last-In, First-Out). Хто останнім увійшов, той першим вийшов.

У .NET framework існує клас Stack для роботи зі стеком.
Для створення об'єкта класу Stack використовується конструктор без параметрів:
Stack<T> s = new Stack<T>();
Створюється s - порожній стек, який може містити елементи типу T.
Для роботи зі стеком нам можуть знадобитися такі методи:
Push(x) - поміщає елемент x на вершину стекуPop() - дістає з вершини стеку верхній елемент і видаляє його зі стекуContains(x) - логічний метод, перевіряє чи є елемент x у стекуCount - властивість, що визначає кількість елементів у стекуФункції для роботи зі стеком практично аналогічні функціям черги.
Необхідно пам'ятати:
Переробимо попередній приклад.
Отримати випадковим чином n цілих чисел. Усі парні числа помістити у стек. Визначити, чи є у стеку число 10. Визначити кількість елементів у стеку. Вивести стек на екран і знайти суму всіх його чисел.
Програма:
static void Main(string[] args)
{
// Створюємо порожній стек цілих чисел
Stack stack = new Stack();
Random random = new Random();
Console.WriteLine("Введіть кількість чисел:");
int numbersCount = Convert.ToInt32(Console.ReadLine());
// Генерування та додавання випадкових чисел
for (int i = 1; i <= numbersCount; i++)
{
int randomNumber = random.Next(1, 20);
Console.WriteLine(randomNumber);
// Додаємо парні числа до стеку
if (randomNumber % 2 == 0)
stack.Push(randomNumber);
}
// Перевірка наявності числа 10 у стеці
bool containsTen = stack.Contains(10);
Console.WriteLine(containsTen ? "Число 10 є у стеці" : "Числа 10 немає у стеці");
// Виведення кількості елементів
int stackSize = stack.Count;
Console.WriteLine($"Стек містить {stackSize} чисел");
// Виведення та обчислення суми елементів
int sum = 0;
Console.WriteLine("Елементи стеку:");
for (int i = 1; i <= stackSize; i++)
{
int number = stack.Pop();
sum += number;
Console.WriteLine(number);
}
Console.WriteLine($"Сума = {sum}");
Console.ReadKey();
}
Результат роботи:
Введіть кількість чисел:
5
3
14
7
10
2
Число 10 є у стеці
Стек містить 3 чисел
Елементи стеку:
2
10
14
Сума = 26
Зверніть увагу, що перший парний елемент (16) потрапив у самий низ стеку, а останній парний (10) опинився на вершині стеку.