#include <iostream>
#include <stdexcept>
// 定义链表节点结构
struct Node {
int data;
Node* next;
};
// 链表队列类
class LinkedListQueue {
private:
Node* front; // 队头指针
Node* rear; // 队尾指针
public:
// 构造函数,初始化队头和队尾指针
LinkedListQueue() {
front = nullptr;
rear = nullptr;
}
// 析构函数,释放所有节点内存
~LinkedListQueue() {
while (!is_empty()) {
dequeue();
}
}
// 判断队列是否为空
bool is_empty() const {
return front == nullptr;
}
// 入队操作,将元素添加到队列尾部
void enqueue(int item) {
Node* new_node = new Node();
new_node->data = item;
new_node->next = nullptr;
if (rear == nullptr) {
front = rear = new_node;
} else {
rear->next = new_node;
rear = new_node;
}
}
// 出队操作,移除并返回队头元素
int dequeue() {
if (is_empty()) {
throw std::runtime_error("Queue is empty");
}
Node* temp = front;
int item = temp->data;
front = front->next;
if (front == nullptr) {
rear = nullptr;
}
delete temp;
return item;
}
// 查看队头元素但不移除
int peek() const {
if (is_empty()) {
throw std::runtime_error("Queue is empty");
}
return front->data;
}
};
公有(PUBLIC)与私有(private)的访问控制符:
两者都使用在类当中,均包括成员及函数
私有成员及函数(外冷内热)只能在友元函数和类的其他成员函数中使用,不能被外部代码或派生类使用
公有函数(social 达人)
析构函数:
bool 函数的dilidili:
// 判断队列是否为空
bool is_empty() {
return front == nullptr;
}
在C++中,布尔类型的值可以直接用 true
(非零值)和 false
(零值)表示。在你提供的代码中,使用 return front == nullptr;
可以直接返回一个布尔值,因为 front == nullptr
这个表达式会得到一个布尔结果,即 true
或 false
。因此,这种方式更直观和简洁,避免了显式地返回 0
或 1
。这样的设计使代码更易读和理解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构