用c语言写循环队列函数
时间: 2024-05-09 20:18:59 浏览: 92
c语言 循环队列
5星 · 资源好评率100%
以下是用C语言实现循环队列的函数:
```c
#define MAX_QUEUE_SIZE 10 // 队列最大容量
typedef struct {
int front; // 队头索引
int rear; // 队尾索引
int data[MAX_QUEUE_SIZE]; // 队列元素数组
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = 0;
q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int isFull(Queue *q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
// 入队
int enqueue(Queue *q, int n) {
if (isFull(q)) {
printf("Queue is full.\n");
return 0;
}
q->data[q->rear] = n;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
return 1;
}
// 出队
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return 0;
}
int n = q->data[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return n;
}
// 打印队列元素
void printQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
int i = q->front;
while (i != q->rear) {
printf("%d ", q->data[i]);
i = (i + 1) % MAX_QUEUE_SIZE;
}
printf("\n");
}
```
使用示例:
```c
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q); // 输出:1 2 3
dequeue(&q);
printQueue(&q); // 输出:2 3
enqueue(&q, 4);
enqueue(&q, 5);
enqueue(&q, 6);
enqueue(&q, 7);
enqueue(&q, 8);
enqueue(&q, 9);
enqueue(&q, 10);
printQueue(&q); // 输出:2 3 4 5 6 7 8 9 10
enqueue(&q, 11); // 输出:Queue is full.
dequeue(&q);
dequeue(&q);
dequeue(&q);
printQueue(&q); // 输出:6 7 8 9 10
return 0;
}
```
阅读全文