Назад Вперед Зміст


Стек

Колекція Stack<T>

Стеком називається така структура даних, у якій додавання нового елемента або видалення елемента можливе лише з одного кінця, який називається вершиною стеку.

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

У .NET framework існує клас Stack для роботи зі стеком.

Для створення об'єкта класу Stack використовується конструктор без параметрів:

Stack<T> s = new Stack<T>();

Створюється s - порожній стек, який може містити елементи типу T.

Для роботи зі стеком нам можуть знадобитися такі методи:

Функції для роботи зі стеком практично аналогічні функціям черги.

Необхідно пам'ятати:

Приклад

Переробимо попередній приклад.

Отримати випадковим чином 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) опинився на вершині стеку.

Назад Вперед Зміст