编写一个程序sqqueue.cpp,实现环形队列(假设环形队列中的元素类型ElemType为char)的各种基本运算,并在此基础上设计一个程序exp1-2.cpp
时间: 2024-09-29 12:01:36 浏览: 72
SqQueue.txt
编写一个名为`sqqueue.cpp`的程序,用于实现环形队列的基本操作,主要包括:
1. 队列初始化:创建一个固定大小的数组表示队列,同时维护两个指针front和rear,分别指向队首和队尾位置。
```cpp
template <typename ElemType>
class CircularQueue {
public:
// 构造函数,设置队列长度
CircularQueue(size_t size) : capacity(size), front(0), rear(0) {}
private:
ElemType* data;
size_t capacity;
size_t front, rear;
};
```
2. 入队(enqueue):如果队尾不是满的,则将新元素插入队尾,更新rear指针。
3. 出队(dequeue):如果队头不是空的,删除并返回队首元素,更新front指针。
4. 查看队列是否为空(isEmpty):检查front指针是否等于rear,为空则返回true,否则返回false。
5. 查看队列是否已满(isFull):检查队尾之后的位置(即front + capacity)是否超过当前容量,若超过则返回true,否则返回false。
6. 获取队列元素数量(getCount):计算队列中实际包含的元素数,等于rear - front(取模capacity以适应环形队列特性)。
接下来,为了演示如何使用这个环形队列,可以设计一个名为`exp1-2.cpp`的程序,展示上述功能的简单应用,例如打印队列、插入元素、移除元素等操作。示例代码可能会包括:
```cpp
#include "sqqueue.h"
int main() {
CircularQueue<char> queue(5); // 创建一个容量为5的环形队列
// 入队操作
queue.enqueue('A');
queue.enqueue('B');
queue.enqueue('C');
// 输出队列内容
std::cout << "Original queue: ";
for (size_t i = 0; i < queue.getCount(); ++i)
std::cout << queue.dequeue() << (i != queue.getCount() - 1 ? " " : "");
// 出队操作
queue.enqueue('D'); // 插入新的元素
std::cout << "\nAfter enqueue D: ";
for (size_t i = 0; i < queue.getCount(); ++i)
std::cout << queue.dequeue() << (i != queue.getCount() - 1 ? " " : "");
return 0;
}
```
运行此程序会输出队列在不同操作前后的状态。
阅读全文