Что такое стек (stack) в C?
Этот вопрос проверяет понимание принципа работы структуры данных "стек", включая основные операции.
Короткий ответ
Стек — это структура данных, работающая по принципу LIFO (Last In, First Out), что означает, что последний добавленный элемент удаляется первым. Доступ к элементам возможен только с вершины стека. Основные операции:
push() — добавление элемента в стек.
pop() — удаление элемента из стека.
Длинный ответ
Как работает стек:
- В стеке элементы добавляются и удаляются только с одной стороны — вершины (top).
- Принцип работы напоминает стопку тарелок: последняя добавленная тарелка убирается первой.
Основные операции:
push(value): добавляет элемент в стек.
pop(): удаляет верхний элемент.
peek(): возвращает верхний элемент без удаления.
isEmpty(): проверяет, пуст ли стек.
Пример реализации стека с использованием массива
#include <stdio.h>
#define MAX 5 // Размер стека
int stack[MAX], top = -1;
void push(int value) {
if (top == MAX - 1) {
printf("Стек переполнен!\n");
return;
}
stack[++top] = value;
}
int pop() {
if (top == -1) {
printf("Стек пуст!\n");
return -1;
}
return stack[top--];
}
int main() {
push(10);
push(20);
printf("Удалён элемент: %d\n", pop());
return 0;
}
Стек используется, когда важно сохранить порядок LIFO, например, в обратном обходе данных, обработке рекурсий и алгоритмах работы с памятью.