数据结构链队列取队头元素如何用C++实现
时间: 2024-09-29 11:15:11 浏览: 39
数据结构中的链队列是一种先进先出(FIFO)的数据结构,其操作包括在队尾添加元素(入队)和从队头删除元素(出队)。在C++中,我们可以使用`std::list`容器来实现链队列,因为它支持常数时间复杂度的`front()`和`pop_front()`操作,这两个操作分别对应于获取队头元素和移除队头元素。
以下是一个简单的链队列实现:
```cpp
#include <iostream>
#include <list>
class Node {
public:
int data;
std::list<Node>::iterator next;
Node(int value) : data(value), next(nullptr) {}
};
template <typename T>
class Queue {
private:
Node* front; // 队头指针
Node* rear; // 队尾指针
public:
Queue() : front(nullptr), rear(nullptr) {}
void enqueue(T value) {
Node* newNode = new Node(value);
if (rear == nullptr) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
bool dequeue(T& value) {
if (front == nullptr) {
return false; // 队列为空
}
value = front->data;
Node* temp = front;
front = front->next;
delete temp;
if (front == nullptr) {
rear = nullptr;
}
return true;
}
// 其他辅助函数...
};
int main() {
Queue<int> q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
int item;
if (q.dequeue(item)) {
std::cout << "Popped item: " << item << std::endl;
}
return 0;
}
```
在这个例子中,`enqueue`方法用于在队尾添加元素,`dequeue`方法用于从队头移除并返回元素。如果队列空,`dequeue`会返回`false`。
阅读全文
相关推荐


















