写出结构为char型的顺序队列存储结构代码
时间: 2024-09-06 15:01:39 浏览: 16
顺序队列是一种基于数组实现的先进先出(FIFO)的数据结构,它允许在一端进行插入操作,在另一端进行删除操作。以下是一个简单的char型顺序队列的存储结构的实现,包括基本操作如入队(enqueue)、出队(dequeue)、检查队列是否为空以及获取队列头部元素(front)等。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义队列的最大容量
// 顺序队列的结构定义
typedef struct {
char data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} CharQueue;
// 初始化队列
void InitQueue(CharQueue *Q) {
Q->front = 0;
Q->rear = 0;
}
// 判断队列是否为空
int IsEmpty(CharQueue *Q) {
return Q->front == Q->rear;
}
// 判断队列是否已满
int IsFull(CharQueue *Q) {
return (Q->rear + 1) % MAXSIZE == Q->front;
}
// 入队操作
int Enqueue(CharQueue *Q, char e) {
if (IsFull(Q)) {
printf("队列已满,无法添加元素。\n");
return 0;
}
Q->data[Q->rear] = e;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
// 出队操作
int Dequeue(CharQueue *Q, char *e) {
if (IsEmpty(Q)) {
printf("队列为空,无法删除元素。\n");
return 0;
}
*e = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
// 获取队列头部元素
int Front(CharQueue *Q, char *e) {
if (IsEmpty(Q)) {
printf("队列为空,无法获取头部元素。\n");
return 0;
}
*e = Q->data[Q->front];
return 1;
}
int main() {
CharQueue Q;
char e;
InitQueue(&Q);
// 示例操作
Enqueue(&Q, 'A');
Enqueue(&Q, 'B');
Enqueue(&Q, 'C');
if (Front(&Q, &e)) {
printf("队列头部元素:%c\n", e);
}
if (Dequeue(&Q, &e)) {
printf("出队元素:%c\n", e);
}
return 0;
}
```
这段代码定义了一个顺序队列的存储结构,并提供了基本的队列操作函数。请注意,在实际应用中,队列的使用可能需要更多的错误检查和异常处理来确保数据的安全性和程序的健壮性。