写出数据元素为 char 型的顺序队列存储结构代码。
时间: 2024-02-17 09:01:46 浏览: 22
好的,以下是数据元素为 char 型的顺序队列存储结构代码:
```c
#define MAXSIZE 100 // 定义队列的最大长度
typedef struct {
char data[MAXSIZE]; // 存放队列元素的数组
int front; // 队头指针,指向队头元素
int rear; // 队尾指针,指向队尾元素的下一个位置
} SqQueue;
// 初始化队列
void initQueue(SqQueue *q) {
q->front = q->rear = 0; // 初始化队头和队尾指针
}
// 判断队列是否为空
int isEmpty(SqQueue *q) {
return q->front == q->rear; // 队头和队尾指针相等表示队列为空
}
// 判断队列是否已满
int isFull(SqQueue *q) {
return (q->rear + 1) % MAXSIZE == q->front; // 队尾指针加1后与队头指针相等表示队列已满
}
// 入队操作
int enQueue(SqQueue *q, char x) {
if (isFull(q)) {
return 0; // 队列已满,插入失败
} else {
q->data[q->rear] = x; // 将元素插入队尾
q->rear = (q->rear + 1) % MAXSIZE; // 队尾指针加1
return 1; // 插入成功
}
}
// 出队操作
int deQueue(SqQueue *q, char *x) {
if (isEmpty(q)) {
return 0; // 队列为空,删除失败
} else {
*x = q->data[q->front]; // 将队头元素赋值给变量x
q->front = (q->front + 1) % MAXSIZE; // 队头指针加1
return 1; // 删除成功
}
}
```
以上代码实现了基本的队列操作,包括初始化队列、判断队列是否为空、判断队列是否已满、入队操作和出队操作。请注意,此处的队列是循环队列,即队尾指针到达数组末尾后会回到数组开头,以实现循环利用数组空间的目的。