编写一个程序 SqQueue.cpp (或.c),实现循环队列的各种基本运算(假设队中 元素类型 QElemType 为 char);
时间: 2024-03-10 17:50:24 浏览: 142
好的,下面是 SqQueue.cpp 的实现:
```cpp
#include <iostream>
using namespace std;
#define MAXSIZE 100 // 定义队列的最大长度
typedef char QElemType; // 定义队列元素的类型
// 循环队列结构体
typedef struct {
QElemType data[MAXSIZE];
int front; // 队头指针
int rear; // 队尾指针
} SqQueue;
// 初始化队列
void InitQueue(SqQueue &Q) {
Q.front = Q.rear = 0;
}
// 判断队列是否为空
bool QueueEmpty(SqQueue Q) {
return Q.front == Q.rear;
}
// 判断队列是否已满
bool QueueFull(SqQueue Q) {
return (Q.rear + 1) % MAXSIZE == Q.front;
}
// 入队操作
bool EnQueue(SqQueue &Q, QElemType x) {
if (QueueFull(Q)) {
return false;
}
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MAXSIZE;
return true;
}
// 出队操作
bool DeQueue(SqQueue &Q, QElemType &x) {
if (QueueEmpty(Q)) {
return false;
}
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return true;
}
// 获取队头元素
bool GetHead(SqQueue Q, QElemType &x) {
if (QueueEmpty(Q)) {
return false;
}
x = Q.data[Q.front];
return true;
}
int main() {
SqQueue Q;
InitQueue(Q);
EnQueue(Q, 'a');
EnQueue(Q, 'b');
EnQueue(Q, 'c');
QElemType x;
DeQueue(Q, x);
cout << "出队元素为:" << x << endl;
GetHead(Q, x);
cout << "队头元素为:" << x << endl;
return 0;
}
```
以上就是 SqQueue.cpp 的实现,其中包括了循环队列的初始化、判断队列是否为空、判断队列是否已满、入队操作、出队操作、获取队头元素等基本运算。
阅读全文