Стек в программировании: принцип работы, основные операции, применение
Стек в программировании - это структура данных, которая работает по принципу "последним пришел, первым вышел" (Last-In-First-Out, LIFO). Он представляет собой упорядоченный список элементов, в котором возможны только две операции: добавление нового элемента на вершину стека (push) и удаление элемента с вершины стека (pop).
Стек можно представить в виде стопки тарелок, где можно добавлять новые тарелки только сверху и забирать только ту, которая сверху. При этом, если стек полон, то добавление нового элемента вызовет ошибку переполнения стека, а если стек пуст, то удаление элемента вызовет ошибку подполнения стека.
Пример кода на языке программирования Python, реализующий структуру данных стек:
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
raise IndexError("Stack is empty")
def peek(self):
if not self.is_empty():
return self.items[-1]
else:
raise IndexError("Stack is empty")
def size(self):
return len(self.items)
В приведенном примере класс Stack реализует основные операции со стеком: создание стека (метод __init__), проверку на пустоту (метод is_empty), добавление элемента на вершину стека (метод push), удаление элемента с вершины стека (метод pop), получение элемента с вершины стека без его удаления (метод peek) и получение размера стека (метод size).
Например использования стека:
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek()) # Выведет 3
print(stack.pop()) # Выведет 3
print(stack.size()) # Выведет 2
В данном примере мы создаем стек, добавляем в него три элемента, затем получаем элемент с вершины стека без его удаления (peek), удаляем элемент с вершины стека (pop) и выводим на экран размер стека (size). Вывод программы будет следующим: 3, 3, 2.