Sobes.tech
Intern
114
questionbank

Что такое стек?

Answer from AI

sobes.tech AI

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

Основные операции:

  • Push: Добавление элемента на вершину стека.
  • Pop: Удаление и возврат элемента с вершины стека.
  • Peek: Возврат элемента с вершины стека без его удаления.
  • IsEmpty: Проверка на пустоту стека.

Примеры использования в C#:

  • Управление вызовами функций (стек вызовов).
  • Обработка выражений (например, преобразование инфиксной записи в постфиксную).
  • Реализация алгоритмов обхода графов и деревьев (DFS).
  • Отмена/повтор действий в приложениях.

В .NET есть класс Stack<T> в пространстве имен System.Collections.Generic.

// Создание стека целых чисел
System.Collections.Generic.Stack<int> numbers = new System.Collections.Generic.Stack<int>();

// Добавление элементов
numbers.Push(1);
numbers.Push(2);
numbers.Push(3); // Вершина стека

// Получение верхнего элемента без удаления
int topElement = numbers.Peek(); // topElement будет 3

// Удаление элементов
int poppedElement = numbers.Pop(); // poppedElement будет 3
poppedElement = numbers.Pop(); // poppedElement будет 2

// Проверка на пустоту
bool isEmpty = numbers.Count == 0; // isEmpty будет false

// Удаление последнего элемента
poppedElement = numbers.Pop(); // poppedElement будет 1

// Проверка на пустоту после удаления всех элементов
isEmpty = numbers.Count == 0; // isEmpty будет true