循环队列的基本操作c语言
时间: 2023-12-07 22:36:11 浏览: 85
循环队列是一种基于顺序存储结构的队列,它可以充分利用数组空间,避免了顺序队列假溢出的问题。循环队列的基本操作包括初始化、入队、出队、判空和判满等。以下是循环队列的基本操作C语言实现:
1. 初始化循环队列
```
#define MAXSIZE 100 // 循环队列的最大长度
typedef struct {
int data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} CircularQueue;
void InitQueue(CircularQueue *Q) {
Q->front = Q->rear = 0; // 初始化队头和队尾指针为0
}
```
2. 入队操作
```
int EnQueue(CircularQueue *Q, int x) {
if ((Q->rear + 1) % MAXSIZE == Q->front) { // 队列已满
return 0;
}
Q->data[Q->rear] = x; // 将元素x插入队尾
Q->rear = (Q->rear + 1) % MAXSIZE; // 队尾指针后移一位
return 1;
}
```
3. 出队操作
```
int DeQueue(CircularQueue *Q, int *x) {
if (Q->front == Q->rear) { // 队列为空
return 0;
}
*x = Q->data[Q->front]; // 将队头元素赋值给x
Q->front = (Q->front + 1) % MAXSIZE; // 队头指针后移一位
return 1;
}
```
4. 判空操作
```
int IsEmpty(CircularQueue Q) {
if (Q.front == Q.rear) { // 队列为空
return 1;
}
return 0;
}
```
5. 判满操作
```
int IsFull(CircularQueue Q) {
if ((Q.rear + 1) % MAXSIZE == Q.front) { // 队列已满
return 1;
}
return 0;
}
```
阅读全文