C Academy · Урок

Стеки и очереди

Поймите структуры данных стек (LIFO) и очередь (FIFO), а также их применение

Урок 2 из 310 шагов

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

Стеки и очереди в C

Стеки и очереди — это линейные структуры данных, используемые для хранения данных и управления ими.

В этом уроке Вы узнаете:

  • Как работают стеки (LIFO — последним пришёл, первым ушёл).
  • Как работают очереди (FIFO — первым пришёл, первым ушёл).
  • Как реализовать стеки и очереди в C.
Стеки и очереди — иллюстрация 1

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

Стек работает по принципу 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!

Стеки и очереди — иллюстрация 10
Можно начать бесплатно

Изучай 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 — локальная установка не требуется.

Все уроки этого курса

  1. Связные списки
  2. Стеки и очереди
  3. Деревья и графы
← Назад к C Academy