1. C封装成类基于面向对象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. 逆序遍历双链表// 逆序打印逻辑与之前完全一致 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; } }
数据结构——双链表(C++)
1. C封装成类基于面向对象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. 逆序遍历双链表// 逆序打印逻辑与之前完全一致 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; } }