c++只有一个队列头指针和一个计数器count实现队列的各项操作以及输出代码
时间: 2024-09-23 16:15:38 浏览: 43
用C++实现队列的程序代码
在 C++ 中,你可以使用一个动态数组(vector 或 std::deque)作为队列的基础数据结构,并结合一个头指针和一个计数器 `count` 来管理队列的操作。这里是一个简单的单链表实现的队列(Queue)示例:
```cpp
#include <iostream>
#include <vector>
class Node {
public:
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
class Queue {
private:
Node* front; // 队首指针
Node* rear; // 队尾指针
int count; // 当前元素个数
public:
Queue() : front(nullptr), rear(nullptr), count(0) {}
~Queue() { clear(); }
// 插入元素到队尾
void enqueue(int value) {
if (count == 0) {
front = rear = new Node(value);
} else {
rear->next = new Node(value);
rear = rear->next;
}
count++;
}
// 从队首删除并返回元素
int dequeue() {
if (isEmpty()) return -1;
int removedValue = front->data;
Node* temp = front;
front = front->next;
delete temp;
count--;
if (front == nullptr) rear = nullptr;
return removedValue;
}
// 查看队列是否为空
bool isEmpty() const {
return count == 0;
}
// 输出队列中的所有元素
void display() {
Node* current = front;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << "\n";
}
private:
// 清空队列
void clear() {
while (!isEmpty()) {
dequeue();
}
delete rear;
rear = front = nullptr;
count = 0;
}
};
int main() {
Queue q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
std::cout << "Queue elements before deletion:\n";
q.display();
q.dequeue();
std::cout << "After dequeuing an element: \n";
q.display();
return 0;
}
```
这个例子中,我们创建了一个名为 `Node` 的类来存储队列中的元素,然后在 `Queue` 类里实现了 `enqueue`, `dequeue`, `isEmpty`, 和 `display` 等基本操作。在 `main` 函数中展示了如何使用这个队列。
阅读全文