C语言设计最多能存储10个元素的循环队列,并完成初始化、入队、出队、判空、判满、计算元素个数等六个基本操作。
时间: 2024-10-14 17:10:50 浏览: 39
8584 循环队列的基本操作
5星 · 资源好评率100%
在C语言中,我们可以创建一个使用数组实现的循环队列结构来满足这个需求。这里是一个简单的示例:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int queue[MAX_SIZE]; // 存储元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void init(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 入队(如果队满则报错)
void enqueue(Queue *q, int item) {
if (q->rear == (q->front + MAX_SIZE - 1) % MAX_SIZE) {
printf("Queue is full.\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE; // 循环队列
q->queue[q->rear] = item;
}
// 出队(如果队空则报错)
int dequeue(Queue *q) {
if (q->front == -1) {
printf("Queue is empty.\n");
return -1;
}
int item = q->queue[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return item;
}
// 判空
int is_empty(Queue *q) {
return q->front == -1;
}
// 判满
int is_full(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
// 计算元素个数
int size(Queue *q) {
if (is_empty(q))
return 0;
else
return (q->rear - q->front + MAX_SIZE) % MAX_SIZE;
}
// 示例使用
int main() {
Queue my_queue;
init(&my_queue);
// 其他操作...
enqueue(&my_queue, 5); // 入队
printf("Size: %d\n", size(&my_queue)); // 输出元素个数
dequeue(&my_queue); // 出队
return 0;
}
```
阅读全文