输入1-10的数字组成普通线性队列; (2)判断此时队列的队首元素; (3)打印出队列操作后的队首元素; (4)由于普通线性队列的限制,此时尝试使用循环队列来解决上述问题。数据结构c++
时间: 2024-11-23 18:40:31 浏览: 16
在C++中,我们可以创建一个简单的队列数据结构,包括一个数组作为存储容器,以及两个指针front(队首)和rear(队尾)。以下是针对你的需求的一个基础实现:
```cpp
#include <iostream>
using namespace std;
#define MAX_SIZE 10
template <typename T>
class Queue {
private:
T queue[MAX_SIZE];
int front;
int rear;
public:
// 构造函数初始化队列
Queue() : front(0), rear(0) {}
// 判断队列是否为空
bool isEmpty() { return front == rear; }
// 判断队列是否已满
bool isFull() { return (rear + 1) % MAX_SIZE == front; }
// 入队操作
void enqueue(T value) {
if (!isFull()) {
rear = (rear + 1) % MAX_SIZE;
queue[rear] = value;
cout << "Enqueueing " << value << endl;
} else {
cout << "Queue is full, cannot enqueue." << endl;
}
}
// 出队操作
void dequeue() {
if (!isEmpty()) {
front = (front + 1) % MAX_SIZE;
cout << "Dequeued " << queue[front] << endl;
} else {
cout << "Queue is empty, cannot dequeue." << endl;
}
}
// 查看当前队首元素(模拟查看)
T getFront() const {
if (!isEmpty()) {
return queue[front];
} else {
cout << "Queue is empty, no front element." << endl;
return T();
}
}
};
int main() {
Queue<int> myQueue;
// 示例操作
for (int i = 1; i <= 10; ++i) {
myQueue.enqueue(i);
}
// 判断并打印队首元素
cout << "Current front element: " << myQueue.getFront() << endl;
// 模拟出队操作
myQueue.dequeue();
return 0;
}
```
在这个示例中,我们首先创建了一个`Queue`模板类,包含基本的队列操作。然后,在`main`函数中,我们对这个队列进行了一次填充,并打印了队首元素。最后,模拟地进行了一次出队操作。
阅读全文