创建一个20个元素空间的循环队列,实现队列的初始化,入队,出队,读队头元素等操作
时间: 2023-06-05 22:04:14 浏览: 83
循环队列的初始化、入队、队列长度、取队头元素、出队、遍历等基本操作
好的,这是一个技术问题,可以回答。下面是针对你的问题的代码实现:
```c
#define QUEUE_SIZE 20
typedef struct {
int data[QUEUE_SIZE];
int head;
int tail;
} LoopQueue;
void initQueue(LoopQueue* queue) {
queue -> head = 0;
queue -> tail = 0;
}
int isQueueEmpty(LoopQueue* queue) {
return queue -> head == queue -> tail;
}
int isQueueFull(LoopQueue* queue) {
return (queue -> tail + 1) % QUEUE_SIZE == queue -> head;
}
void enqueue(LoopQueue* queue, int element) {
if (!isQueueFull(queue)) {
queue -> data[queue -> tail] = element;
queue -> tail = (queue -> tail + 1) % QUEUE_SIZE;
}
}
int dequeue(LoopQueue* queue) {
int result = 0;
if (!isQueueEmpty(queue)) {
result = queue -> data[queue -> head];
queue -> head = (queue -> head + 1) % QUEUE_SIZE;
}
return result;
}
int getHead(LoopQueue* queue) {
if (!isQueueEmpty(queue)) {
return queue -> data[queue -> head];
} else {
return -1; // 队列为空,返回一个默认值
}
}
```
如上所示,这是一个循环队列的实现,包含了队列初始化、入队、出队、读队头元素的操作。
阅读全文