Стеки и очереди
Поймите структуры данных стек (LIFO) и очередь (FIFO), а также их применение
«Стеки и очереди» — бесплатный урок C Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 3 уроков всего.
Стеки и очереди в C
Стеки и очереди — это линейные структуры данных, используемые для хранения данных и управления ими.
В этом уроке Вы узнаете:
- Как работают стеки (LIFO — последним пришёл, первым ушёл).
- Как работают очереди (FIFO — первым пришёл, первым ушёл).
- Как реализовать стеки и очереди в C.

Что такое стек
Стек работает по принципу Last In, First Out (LIFO).
Операции:
- Добавление — добавить элемент на вершину.
- Удаление — удалить элемент с вершины.
- Просмотр — просмотреть элемент на вершине, не удаляя его.
Пример: реализация стека
Эта программа демонстрирует операции со стеком с использованием массива.
#include <stdio.h>
#define MAX 5
int stack[MAX], top = -1;
void push(int value) {
if (top == MAX - 1) {
printf("Stack Overflow\n");
} else {
stack[++top] = value;
}
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
return -1;
} else {
return stack[top--];
}
}
int main() {
push(10);
push(20);
printf("Popped: %d\n", pop());
return 0;
}Что такое очередь
Очередь работает по принципу First In, First Out (FIFO).
Операции:
- Добавление в очередь — добавить элемент в конец.
- Удаление из очереди — удалить элемент из начала.
- Просмотр — просмотреть первый элемент, не удаляя его.
Пример: реализация очереди
Эта программа демонстрирует операции с очередью с использованием массива.
#include <stdio.h>
#define MAX 5
int queue[MAX], front = -1, rear = -1;
void enqueue(int value) {
if (rear == MAX - 1) {
printf("Queue Overflow\n");
} else {
if (front == -1) front = 0;
queue[++rear] = value;
}
}
int dequeue() {
if (front == -1 || front > rear) {
printf("Queue Underflow\n");
return -1;
} else {
return queue[front++];
}
}
int main() {
enqueue(10);
enqueue(20);
printf("Dequeued: %d\n", dequeue());
return 0;
}Кольцевая очередь
Кольцевая очередь устраняет ограничения обычной очереди, повторно используя свободные места.
Операции остаются теми же, но переходят к началу массива после достижения его конца.
Пример: кольцевая очередь
Эта программа демонстрирует реализацию кольцевой очереди.
#include <stdio.h>
#define MAX 5
int queue[MAX], front = -1, rear = -1;
void enqueue(int value) {
if ((rear + 1) % MAX == front) {
printf("Queue Overflow\n");
} else {
if (front == -1) front = 0;
rear = (rear + 1) % MAX;
queue[rear] = value;
}
}
int dequeue() {
if (front == -1) {
printf("Queue Underflow\n");
return -1;
}
int data = queue[front];
if (front == rear) {
front = rear = -1;
} else {
front = (front + 1) % MAX;
}
return data;
}
int main() {
enqueue(10);
enqueue(20);
printf("Dequeued: %d\n", dequeue());
return 0;
}Применение стеков и очередей
Стеки используются для:
- Управления вызовами функций (рекурсия).
- Операций отмены и повтора действий.
- Вычисления выражений.
Очереди используются для:
- Планирования задач в операционных системах.
- Управления запросами на веб-серверах.
- Передачи данных в сетях.
Итоги
В этом уроке Вы узнали:
- Как работают стеки и очереди.
- Как реализовать операции со стеками и очередями.
- О применении стеков и очередей.
Далее мы рассмотрим деревья и графы в C!

Изучай C с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 39
- Уроки
- 144
Часто задаваемые вопросы
Урок «Стеки и очереди» бесплатный?
Да — полный текст урока «Стеки и очереди» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 3 уроков всего.
Чему я научусь в уроке «Стеки и очереди»?
Поймите структуры данных стек (LIFO) и очередь (FIFO), а также их применение Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Стеки и очереди»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Связные списки
- Стеки и очереди
- Деревья и графы