在C++中如何自定义链表结构,并实现队列的基本操作?包括入队和出队功能。
时间: 2024-11-13 08:35:40 浏览: 20
要设计一个链表结构并实现队列操作,首先要理解链表和队列的基本概念。链表是一种通过指针连接的线性数据结构,其中每个节点包含数据部分和指向下个节点的指针。队列是一种先进先出(FIFO)的数据结构,支持两种主要操作:入队(enqueue)将元素添加到队列末尾,出队(dequeue)则移除队列开头的元素。以下是一个简单的实现示例:
参考资源链接:[C++编程实战:409页全练题+算法详解](https://wenku.csdn.net/doc/6401abd5cce7214c316e9aab?spm=1055.2569.3001.10343)
```cpp
#include <iostream>
// 定义链表节点结构体
struct Node {
int data;
Node* next;
Node(int value) : data(value), next(nullptr) {}
};
// 定义队列类
class Queue {
private:
Node* front; // 指向队列头部的指针
Node* rear; // 指向队列尾部的指针
public:
// 构造函数
Queue() : front(nullptr), rear(nullptr) {}
// 析构函数
~Queue() {
while (!isEmpty()) {
dequeue();
}
}
// 判断队列是否为空
bool isEmpty() {
return front == nullptr;
}
// 入队操作
void enqueue(int value) {
Node* newNode = new Node(value);
if (rear == nullptr) { // 如果队列为空,新节点即为头尾节点
front = rear = newNode;
} else { // 否则将新节点添加到尾部,并更新尾指针
rear->next = newNode;
rear = newNode;
}
}
// 出队操作
int dequeue() {
if (isEmpty()) {
throw std::out_of_range(
参考资源链接:[C++编程实战:409页全练题+算法详解](https://wenku.csdn.net/doc/6401abd5cce7214c316e9aab?spm=1055.2569.3001.10343)
阅读全文