在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
函數中,我們創建了一個隊列,并向其中添加了一些元素。然后,我們使用一個循環將隊列中的所有元素依次出隊并打印出來。最后,我們釋放了分配給隊列的內存。