用C语言实现队列
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct Queue {
int data[MAX_SIZE];
int front, rear;
} Queue;
Queue* create_queue() {
Queue* queue = (Queue*) malloc(sizeof(Queue));
queue->front = queue->rear = -1;
return queue;
}
int is_empty(Queue* queue) {
return queue->front == -1;
}
int is_full(Queue* queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
void enqueue(Queue* queue, int value) {
if (is_full(queue)) {
printf("Queue is full\n");
return;
}
if (is_empty(queue)) {
queue->front = queue->rear = 0;
} else {
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
queue->data[queue->rear] = value;
}
int dequeue(Queue* queue) {
if (is_empty(queue)) {
printf("Queue is empty\n");
return -1;
}
int value = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAX_SIZE;
}
return value;
}
void print_queue(Queue* queue) {
if (is_empty(queue)) {
printf("Queue is empty\n");
return;
}
int i = queue->front;
while (i != queue->rear) {
printf("%d ", queue->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("%d\n", queue->data[queue->rear]);
}
int main() {
Queue* queue = create_queue();
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
print_queue(queue);
printf("Dequeued: %d\n", dequeue(queue));
print_queue(queue);
printf("Dequeued: %d\n", dequeue(queue));
print_queue(queue);
printf("Dequeued: %d\n", dequeue(queue));
print_queue(queue);
printf("Dequeued: %d\n", dequeue(queue));
return 0;
}
原文地址: https://www.cveoy.top/t/topic/AnX 著作权归作者所有。请勿转载和采集!