设队列的元素类型为char,实现顺序循环队列的各种基本操作的程序
时间: 2023-06-03 14:03:50 浏览: 71
好的,我明白了。以下是实现顺序循环队列的几种基本操作的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5 // 队列的最大长度
// 队列的结构体
typedef struct {
char data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} SqQueue;
// 初始化队列
void InitQueue(SqQueue *Q) {
Q->front = Q->rear = 0;
}
// 判断队列是否为空
int QueueEmpty(SqQueue Q) {
return Q.front == Q.rear;
}
// 判断队列是否已满
int QueueFull(SqQueue Q) {
return (Q.rear + 1) % MAXSIZE == Q.front;
}
// 入队
int EnQueue(SqQueue *Q, char x) {
// 队列已满,不能入队
if (QueueFull(*Q))
return 0;
Q->data[Q->rear] = x; // 将新元素插入队尾
Q->rear = (Q->rear + 1) % MAXSIZE; // 队尾指针加1
return 1;
}
// 出队
int DeQueue(SqQueue *Q, char *x) {
// 队列为空,不能出队
if (QueueEmpty(*Q))
return 0;
*x = Q->data[Q->front]; // 取出队头元素
Q->front = (Q->front + 1) % MAXSIZE; // 队头指针加1
return 1;
}
// 测试代码
int main() {
SqQueue Q;
char x;
InitQueue(&Q);
// 入队
EnQueue(&Q, 'a');
EnQueue(&Q, 'b');
EnQueue(&Q, 'c');
// 出队
DeQueue(&Q, &x);
printf("%c ", x);
DeQueue(&Q, &x);
printf("%c ", x);
// 再入队
EnQueue(&Q, 'd');
EnQueue(&Q, 'e');
// 再出队
DeQueue(&Q, &x);
printf("%c ", x);
DeQueue(&Q, &x);
printf("%c ", x);
DeQueue(&Q, &x);
printf("%c ", x);
// 队列已空
if (QueueEmpty(Q))
printf("Queue Empty!\n");
return 0;
}
```
请注意,这只是一个示例程序,可能并不完整或者存在错误。如果您需要在实际开发中使用该程序,请仔细审查并适当修改。