#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 这个表达式会得到一个布尔结果,即 truefalse。因此,这种方式更直观和简洁,避免了显式地返回 01。这样的设计使代码更易读和理解。

 

posted on 2024-06-24 09:41  fafrkvit  阅读(3)  评论(0编辑  收藏  举报