在 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
函數用于打印鏈表中的所有元素。
通過使用雙重指針,我們可以方便地實現鏈表中的節點的前后連接關系,從而實現一個雙向鏈表。