编写一个程序实现循环队列(假设队列中元素类型ElemType为char)的各种基本运算,并在此基础上实现如下功能:(1)初始化队列q。 (2)判断队列q是否非空。 (3)依次进队元素a、b、c、d。 (4)出队一个元素,输出该元素。 (5)依次进队元素e、f、g。 (6)输出出队序列。 (7列。
时间: 2023-07-31 17:12:23 浏览: 192
以下是基于C语言实现的循环队列:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct {
char data[MAX_SIZE];
int front;
int rear;
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int isQueueEmpty(Queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int isQueueFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
// 入队
void enQueue(Queue *q, char elem) {
if (isQueueFull(q)) {
printf("The queue is full.\n");
return;
}
q->data[q->rear] = elem;
q->rear = (q->rear + 1) % MAX_SIZE;
}
// 出队
char deQueue(Queue *q) {
if (isQueueEmpty(q)) {
printf("The queue is empty.\n");
return '\0';
}
char elem = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return elem;
}
// 打印队列元素
void printQueue(Queue *q) {
if (isQueueEmpty(q)) {
printf("The queue is empty.\n");
return;
}
printf("Elements in the queue: ");
int i = q->front;
while (i != q->rear) {
printf("%c ", q->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
if (isQueueEmpty(&q)) {
printf("The queue is empty.\n");
}
enQueue(&q, 'a');
enQueue(&q, 'b');
enQueue(&q, 'c');
enQueue(&q, 'd');
char elem = deQueue(&q);
printf("Dequeued element: %c\n", elem);
enQueue(&q, 'e');
enQueue(&q, 'f');
enQueue(&q, 'g');
printQueue(&q);
return 0;
}
```
程序输出如下:
```
The queue is empty.
Dequeued element: a
The queue is full.
Elements in the queue: b c d e f
```
阅读全文