循环队列基本操作C语言
时间: 2023-11-06 21:09:19 浏览: 107
循环队列是一种特殊的队列,它的队尾指针可以指向队列的开头,实现循环利用队列空间。循环队列的基本操作包括初始化、入队、出队、判空、判满和获取队头元素等操作。以下是循环队列的基本操作C语言实现:
1. 初始化循环队列
```
void InitQueue(SqQueue *Q, int maxsize) {
Q->base = (int*)malloc(maxsize * sizeof(int));
Q->front = Q->rear = 0;
Q->maxsize = maxsize;
}
```
2. 判断循环队列是否为空
```
int IsEmpty(SqQueue *Q) {
if (Q->front == Q->rear) {
return 1;
} else {
return 0;
}
}
```
3. 判断循环队列是否已满
```
int IsFull(SqQueue *Q) {
if ((Q->rear + 1) % Q->maxsize == Q->front) {
return 1;
} else {
return 0;
}
}
```
4. 入队操作
```
int EnQueue(SqQueue *Q, int x) {
if (IsFull(Q)) {
return 0;
} else {
Q->base[Q->rear] = x;
Q->rear = (Q->rear + 1) % Q->maxsize;
return 1;
}
}
```
5. 出队操作
```
int DeQueue(SqQueue *Q, int *x) {
if (IsEmpty(Q)) {
return 0;
} else {
*x = Q->base[Q->front];
Q->front = (Q->front + 1) % Q->maxsize;
return 1;
}
}
```
6. 获取队头元素
```
int GetHead(SqQueue *Q, int *x) {
if (IsEmpty(Q)) {
return 0;
} else {
*x = Q->base[Q->front];
return 1;
}
}
```
阅读全文