Очередь в языке программирования C
Очередь в языке C - это структура данных, которая позволяет хранить и извлекать элементы по принципу "первым пришёл, первым вышел" (FIFO - first in, first out). В данном ответе описано, как создать и использовать очередь в языке C с примерами кода.
Для начала нам понадобится определить структуру для элемента очереди. В этой структуре мы будем хранить значение элемента и указатель на следующий элемент:
typedef struct Node {
int data;
struct Node* next;
} Node;
Теперь создадим структуру для самой очереди. В ней мы будем хранить указатели на начало и конец:
typedef struct Queue {
Node* front;
Node* rear;
} Queue;
Далее опишем функцию enqueue, которая добавляет элемент в конец очереди:
void enqueue(Queue* queue, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (queue->rear == NULL) {
queue->front = newNode;
queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
}
Аналогично, создадим функцию dequeue, которая удаляет элемент из начала очереди:
int dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("Очередь пуста!\n");
return INT_MIN; // Возвращаем минимальное значение для типа int
}
int value = queue->front->data;
Node* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(temp);
return value;
}
Теперь, чтобы использовать очередь, мы можем создать экземпляр структуры Queue и добавить элементы в очередь с помощью функции enqueue. Затем мы можем удалить элементы из очереди с помощью функции dequeue и выводить их значения на экран:
int main() {
Queue queue;
queue.front = NULL;
queue.rear = NULL;
enqueue(&queue, 5);
enqueue(&queue, 10);
enqueue(&queue, 15);
printf("%d\n", dequeue(&queue)); // Выведет 5
printf("%d\n", dequeue(&queue)); // Выведет 10
printf("%d\n", dequeue(&queue)); // Выведет 15
return 0;
}
Выполнив этот код, мы добавляем значения 5, 10 и 15 в очередь, а затем извлекаем их поочередно. Результат на экране будет следующим:
5
10
15
Таким образом, мы создали простую очередь в языке C и продемонстрировали добавление и удаление элементов из нее с использованием функций enqueue и dequeue.
Очереди являются важной структурой данных в программировании и находят широкое применение во многих задачах.