循环队列的入队和出队C语言
时间: 2023-11-08 18:05:20 浏览: 125
循环队列是一种常见的队列实现方式,它可以有效地利用数组空间,实现队列的基本操作。下面是循环队列的入队和出队C语言实现:
1. 入队操作:
```c
#define MAXSIZE 100 // 定义循环队列的最大长度
typedef struct {
int data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 入队操作
int EnQueue(Queue *q, int x) {
if ((q->rear + 1) % MAXSIZE == q->front) { // 队列已满
return 0;
}
q->data[q->rear] = x; // 将元素插入队尾
q->rear = (q->rear + 1) % MAXSIZE; // 队尾指针后移一位
return 1;
}
```
2. 出队操作:
```c
// 出队操作
int DeQueue(Queue *q, int *x) {
if (q->front == q->rear) { // 队列为空
return 0;
}
*x = q->data[q->front]; // 取出队头元素
q->front = (q->front + 1) % MAXSIZE; // 队头指针后移一位
return 1;
}
```
在循环队列中,队头指针和队尾指针都是循环的,当队尾指针到达数组的末尾时,它会重新指向数组的开头,从而实现循环。当队列为空时,队头指针和队尾指针相等;当队列已满时,队尾指针的下一位就是队头指针。
阅读全文