编写一个c++算法,它能够取得链式队列首元素的值。
时间: 2024-10-14 16:13:53 浏览: 26
在C++中,链式队列(也称为双向链表队列)通常包含两个指针,一个指向队头(front),一个指向队尾(rear)。获取首元素的值是一个基本操作,你可以通过直接访问队头节点来实现。以下是一个简单的`Node`结构体表示链式队列的节点,以及一个`Queue`类用于操作:
```cpp
// 定义链式队列节点
struct Node {
int value;
Node* next;
};
// 链式队列类
class Queue {
private:
Node* front; // 队头
Node* rear; // 队尾
public:
// 构造函数和析构函数省略
// 入队(添加元素到尾部)
void enqueue(int value) {
Node* newNode = new Node();
newNode->value = value;
newNode->next = nullptr;
if (rear == nullptr) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
// 出队(获取并删除首元素)
int dequeue() {
if (front == nullptr) {
throw std::runtime_error("Queue is empty");
}
int value = front->value;
Node* temp = front;
front = front->next;
// 如果队列仅剩下一个元素,则更新 rear 指针
if (front == nullptr) {
rear = nullptr;
}
delete temp; // 释放内存
return value;
}
// 获取首元素(注意这不是出队操作,返回值不会改变队列)
int getFront() const {
if (front == nullptr) {
throw std::runtime_error("Queue is empty");
}
return front->value;
}
};
```
阅读全文