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;
}
}