在C语言中,简化实现队列的数据结构可以使用数组。以下是一个使用数组实现队列的简单示例:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
typedef struct {
int data[SIZE];
int front;
int rear;
} Queue;
Queue* createQueue() {
Queue* queue = (Queue*)malloc(sizeof(Queue));
if (queue == NULL) {
printf("Memory error\n");
exit(0);
}
queue->front = queue->size - 1;
queue->rear = -1;
return queue;
}
int isFull(Queue* queue) {
return (queue->rear + 1) % SIZE == queue->front;
}
int isEmpty(Queue* queue) {
return queue->front == -1;
}
void enqueue(Queue* queue, int item) {
if (isFull(queue)) {
printf("Queue is full\n");
return;
}
queue->rear = (queue->rear + 1) % SIZE;
queue->data[queue->rear] = item;
}
int dequeue(Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty\n");
return -1;
}
int item = queue->data[queue->front];
queue->front = (queue->front + 1) % SIZE;
return item;
}
int main() {
Queue* queue = createQueue();
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
enqueue(queue, 4);
enqueue(queue, 5);
while (!isEmpty(queue)) {
printf("%d ", dequeue(queue));
}
free(queue);
return 0;
}
这个示例中,我们定义了一个名为Queue
的结构体,其中包含一个数组data
来存储队列中的元素,以及两个整数变量front
和rear
分别表示队列的头部和尾部。接下来,我们实现了一些基本的队列操作,如创建队列、判断队列是否已满、判断队列是否为空、入队(enqueue)和出队(dequeue)。
在main
函数中,我们创建了一个队列,并向其中添加了一些元素。然后,我们使用一个循环将队列中的所有元素依次出队并打印出来。最后,我们释放了分配给队列的内存。