定义并实现循环队列的存储结构
时间: 2023-06-09 20:03:28 浏览: 106
循环队列是一种特殊的队列,其存储结构通常由一个固定大小的数组和两个指针front和rear组成。front指向队列的第一个元素,rear指向队列最后一个元素的下一个位置。当front等于rear时,队列为空。当rear+1等于front时,队列满。
以下是循环队列的存储结构的C语言实现:
```
#define MAXSIZE 100 // 队列的最大容量
typedef struct {
int data[MAXSIZE];
int front; // 队列头指针
int rear; // 队列尾指针
} CircularQueue;
// 初始化循环队列
void InitQueue(CircularQueue *q) {
q->front = 0;
q->rear = 0;
}
// 判断队列是否为空
bool IsEmpty(CircularQueue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
bool IsFull(CircularQueue *q) {
return (q->rear + 1) % MAXSIZE == q->front;
}
// 入队操作
bool EnQueue(CircularQueue *q, int x) {
if (IsFull(q)) {
return false;
}
q->data[q->rear] = x; // 将元素插入队尾
q->rear = (q->rear + 1) % MAXSIZE; // 更新队尾指针
return true;
}
// 出队操作
bool DeQueue(CircularQueue *q, int *x) {
if (IsEmpty(q)) {
return false;
}
*x = q->data[q->front]; // 将队头元素取出
q->front = (q->front + 1) % MAXSIZE; // 更新队头指针
return true;
}
```
注意:以上代码仅为示例,实际使用时可能需要根据需求进行修改。
阅读全文