c语言 循环队列 排队分玩具
时间: 2023-09-03 20:06:56 浏览: 64
这是一个简单的循环队列排队分玩具的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct {
int front; // 队首下标
int rear; // 队尾下标
int data[MAX_SIZE]; // 队列元素
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = queue->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int isFull(Queue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队
void enqueue(Queue *queue, int item) {
if (isFull(queue)) {
printf("Queue is full!\n");
return;
}
queue->data[queue->rear] = item;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
// 出队
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) % MAX_SIZE;
return item;
}
int main() {
Queue queue;
initQueue(&queue);
// 排队分玩具
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
enqueue(&queue, 4);
enqueue(&queue, 5);
// 出队
printf("玩具分配顺序:");
while (!isEmpty(&queue)) {
printf("%d ", dequeue(&queue));
}
printf("\n");
return 0;
}
```
输出:
```
Queue is full!
玩具分配顺序:1 2 3 4 5
```