在 C++ 中,双重指针可以在类成员中应用,主要用于实现一些复杂的数据结构,例如双向链表、二叉树等。下面是一个简单的例子,演示如何在类成员中使用双重指针来实现一个双向链表。
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* prev;
Node* next;
};
class DoublyLinkedList {
public:
Node* head;
Node* tail;
DoublyLinkedList() : head(nullptr), tail(nullptr) {}
~DoublyLinkedList() {
while (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}
}
void append(int data) {
Node* newNode = new Node();
newNode->data = data;
newNode->prev = tail;
newNode->next = nullptr;
if (tail != nullptr) {
tail->next = newNode;
} else {
head = newNode;
}
tail = newNode;
}
void print() {
Node* temp = head;
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
};
int main() {
DoublyLinkedList list;
list.append(1);
list.append(2);
list.append(3);
list.print(); // Output: 1 2 3
return 0;
}
在这个例子中,我们定义了一个 Node
类,其中包含一个整型数据 data
和两个指向前后节点的指针 prev
和 next
。然后我们定义了一个 DoublyLinkedList
类,其中包含两个指向链表头和尾部的指针 head
和 tail
。
在 DoublyLinkedList
类中,我们实现了几个成员函数,包括 append
和 print
。append
函数用于在链表尾部添加一个新节点,print
函数用于打印链表中的所有元素。
通过使用双重指针,我们可以方便地实现链表中的节点的前后连接关系,从而实现一个双向链表。