在C语言中,简化实现队列的数据结构可以使用数组。以下是一个使用数组实现队列的简单示例:
#include#include #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
函数中,我们创建了一个队列,并向其中添加了一些元素。然后,我们使用一个循环将队列中的所有元素依次出队并打印出来。最后,我们释放了分配给队列的内存。