数据结构——双链表(C++)

1. C++封装成类,基于面向对象

cpp 复制代码
class DoublyLinkedList {
private:
    struct Node {
        int data;
        Node* prior;
        Node* next;
        Node(int d) : data(d), prior(nullptr), next(nullptr) {}
    };
    Node* head;  // 哨兵头节点
    Node* last;

public:
    DoublyLinkedList() : head(new Node(0)), last(nullptr) {
        head->prior = nullptr;
        head->next = nullptr;
    }

    void printReverse() const {
        if (!last) return;
        for (Node* temp = last; temp != head; temp = temp->prior) {
            std::cout << temp->data << " ";
        }
        std::cout << std::endl;
    }

    ~DoublyLinkedList() {
        // 清理内存(略,需遍历删除)
        delete head;
    }
};

2. 逆序遍历双链表

cpp 复制代码
// 逆序打印(逻辑与之前完全一致)
    void printReverse() const {
        if (last == nullptr) {
            std::cout << "链表为空" << std::endl;
            return;
        }
        std::cout << "逆序输出: ";
        for (DNode* temp = last; temp != head; temp = temp->prior) {
            std::cout << temp->data << " ";
        }
        std::cout << std::endl;
    }

    ~DoublyLinkedList() {
        DNode* curr = head;
        while (curr != nullptr) {
            DNode* toDelete = curr;
            curr = curr->next;
            delete toDelete;
        }
    }