#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
。这样的设计使代码更易读和理解。
标签:Node,队列,nullptr,链表,实现,empty,front,new,rear From: https://www.cnblogs.com/sly-345/p/18264394