酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C语言实现队列操作:处理入队出队并避免非法操作

```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. 对队列的操作要注意循环利用存储空间,通过取模运算实现。 ######[AI写代码神器 | 567点数解答 | 2024-11-27 14:03:38]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]