Online C Compiler
Открыть в компиляторе

Учебная версия на русском. Код и его вывод сохранены в исходном виде.

Очередь на C: принцип FIFO

Управляйте ожидающими элементами с помощью позиций добавления и извлечения.

Открыть в компиляторе

Очередь на C: принцип FIFO
Управляйте ожидающими элементами с помощью позиций добавления и извлечения.

Очередь выдаёт элементы в порядке поступления. enqueue добавляет в конец, dequeue извлекает из начала. Различайте пустое и полное состояние; допустимый индекс не должен одновременно означать отсутствие данных.

Кольцевая очередь повторно использует освобождённые позиции, возвращая индексы к началу буфера. Счётчик элементов или резервная позиция помогает различать заполнение и пустоту. Простая линейная очередь может исчерпать конец, хотя в начале есть свободное место.

Проверяйте состояние перед каждой операцией. Выполните последовательность, которая проходит через конец буфера, и убедитесь, что порядок поступления сохраняется.

Код C

#include <stdio.h>
#define SIZE 5

typedef struct {
    int items[SIZE];
    int front;
    int rear;
} Queue;

void initQueue(Queue *q) {
    q->front = -1;
    q->rear = -1;
}

int isFull(Queue *q) { return q->rear == SIZE - 1; }
int isEmpty(Queue *q) { return q->front == -1 || q->front > q->rear; }

void enqueue(Queue *q, int val) {
    if (isFull(q)) {
        printf("Queue Full!\n");
        return;
    }
    if (q->front == -1) q->front = 0;
    q->items[++(q->rear)] = val;
}

int dequeue(Queue *q) {
    if (isEmpty(q)) {
        printf("Queue Empty!\n");
        return -1;
    }
    return q->items[(q->front)++];
}

int main() {
    Queue q;
    initQueue(&q);
    enqueue(&q, 100);
    enqueue(&q, 200);
    enqueue(&q, 300);

    printf("Dequeued: %d\n", dequeue(&q));
    printf("Dequeued: %d\n", dequeue(&q));
    return 0;
}
Открыть в компиляторе

Ожидаемый вывод

Dequeued: 100
Dequeued: 200

Частые вопросы

Почему код и вывод остаются на английском?

Ключевые слова, идентификаторы и строки, проверяемые тестами, сохранены, чтобы не менять программу. Объяснения и элементы управления переведены.