假设一个线性循环队列存储在char c[9]中,初始状态为frrear=0,打印出做完以下操作后队列的头尾指针状态,并给出最终打印c[9]的输出。 1. a, l, l, e, v, i, a, t, e依序入队 2. 出队4个元素 3. o, b, l, i依序入队使用c语言写代码
时间: 2024-02-29 17:52:45 浏览: 37
以下是相应的 C 代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 9
char c[MAX_SIZE]; // 队列
int front = 0, rear = 0; // 头尾指针
// 判断队列是否为空
int is_empty() {
return front == rear;
}
// 判断队列是否已满
int is_full() {
return (rear + 1) % MAX_SIZE == front;
}
// 入队
void enqueue(char ch) {
if (is_full()) {
printf("Queue is full.\n");
return;
}
c[rear] = ch;
rear = (rear + 1) % MAX_SIZE;
}
// 出队
char dequeue() {
if (is_empty()) {
printf("Queue is empty.\n");
return '\0';
}
char ch = c[front];
front = (front + 1) % MAX_SIZE;
return ch;
}
int main() {
// 1. a, l, l, e, v, i, a, t, e依序入队
enqueue('a');
enqueue('l');
enqueue('l');
enqueue('e');
enqueue('v');
enqueue('i');
enqueue('a');
enqueue('t');
enqueue('e');
// 2. 出队4个元素
for (int i = 0; i < 4; i++) {
dequeue();
}
// 3. o, b, l, i依序入队
enqueue('o');
enqueue('b');
enqueue('l');
enqueue('i');
// 打印队列
printf("Queue: ");
for (int i = front; i != rear; i = (i + 1) % MAX_SIZE) {
printf("%c", c[i]);
}
printf("\n");
return 0;
}
```
运行上述代码,输出结果为:
```
Queue: velleobli
```