//使用c++实现(1)输入1-10的数字组成普通线性队列; //(2)判断此时队列的队首元素; //(3)打印出队列操作后的队首元素; //(4)由于普通线性队列的限制,此时尝试使用循环队列来解决上述问题。
时间: 2024-11-22 19:37:06 浏览: 7
在C++中,我们可以使用数组实现一个简单的普通线性队列。首先,我们创建一个大小为`MAX_SIZE`的数组作为队列,并维护两个指针,一个`front`表示队首,另一个`rear`表示队尾。以下是基本的实现步骤:
```cpp
#include <iostream>
#define MAX_SIZE 10
class Queue {
private:
int items[MAX_SIZE];
int front, rear;
public:
Queue() : front(0), rear(0) {}
bool isEmpty() { return front == rear; }
bool isFull() { return (rear + 1) % MAX_SIZE == front; }
void enqueue(int value) {
if (isFull()) {
std::cout << "Queue is full.\n";
return;
}
items[rear] = value;
rear = (rear + 1) % MAX_SIZE; // 使用模运算保持rear在有效范围内
}
int dequeue() {
if (isEmpty()) {
std::cout << "Queue is empty.\n";
return -1; // 或者抛异常
}
int removedValue = items[front];
front = (front + 1) % MAX_SIZE; // 同样处理front指针
return removedValue;
}
// 判断队首元素
int getFront() const {
if (!isEmpty())
return items[front];
else
return -1; // 队空的情况
}
// 打印队首元素
void printFront() {
std::cout << "Current front element: " << getFront() << "\n";
}
};
int main() {
Queue queue;
for (int i = 1; i <= 10; ++i) {
queue.enqueue(i);
}
queue.printFront(); // 输出队首元素
queue.dequeue(); // 移除并打印队首元素
queue.printFront(); // 再次打印队首元素
return 0;
}
```
至于循环队列,它是通过连续存储空间模拟线性队列,当队列满时会开始从头覆盖,可以避免普通队列可能出现的边界问题。在上面的普通队列的基础上稍作修改即可实现循环队列。
阅读全文