```c #include <stdio.h> #include <stdlib.h> // 定义队列结构体 typedef struct Queue { int *data; int front, rear, size, capacity; } Queue; // 创建队列 Queue *createQueue(int capacity) { Queue *queue = (Queue *)malloc(sizeof(Queue)); queue->data = (int *)malloc(capacity * sizeof(int)); queue->front = 0; queue->rear = -1; queue->size = 0; queue->capacity = capacity; return queue; } // 判断队列是否为空 int isEmpty(Queue *queue) { return queue->size == 0; } // 判断队列是否已满 int isFull(Queue *queue) { return queue->size == queue->capacity; } // 入队操作 void enqueue(Queue *queue, int item) { if (isFull(queue)) { printf("Queue is full!\n"); return; } queue->rear = (queue->rear + 1) % queue->capacity; queue->data[queue->rear] = item; queue->size++; } // 出队操作 int dequeue(Queue *queue) { if (isEmpty(queue)) { printf("invalid\n"); return -1; } int item = queue->data[queue->front]; queue->front = (queue->front + 1) % queue->capacity; queue->size--; return item; } int main() { int n; scanf("%d", &n); Queue *queue = createQueue(20000); for (int i = 0; i < n; i++) { int op, num; scanf("%d", &op); if (op == 1) { scanf("%d", &num); enqueue(queue, num); } else { dequeue(queue); } } free(queue->data); free(queue); return 0; } ``` 额外需要注意的逻辑点: 1. 注意队列容量的限制,防止入队时超出容量。 2. 出队时要先判断队列是否为空,避免非法操作。 3. 对队列的操作要注意循环利用存储空间,通过取模运算实现。 [2024-11-27 14:03:38 | AI写代码神器 | 567点数解答]