在C++中,釋放單鏈表的節(jié)點(diǎn)可以通過(guò)自定義一個(gè)析構(gòu)函數(shù)來(lái)實(shí)現(xiàn)。在節(jié)點(diǎn)類(lèi)中,定義一個(gè)析構(gòu)函數(shù),該析構(gòu)函數(shù)負(fù)責(zé)釋放節(jié)點(diǎn)所占用的內(nèi)存,然后在單鏈表的析構(gòu)函數(shù)中遍歷鏈表,依次釋放每個(gè)節(jié)點(diǎn),從而釋放整個(gè)鏈表。
例如,假設(shè)節(jié)點(diǎn)類(lèi)定義如下:
class Node {
public:
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
~Node() {
// 釋放節(jié)點(diǎn)所占用的內(nèi)存
delete next;
}
};
然后定義單鏈表類(lèi)如下:
class LinkedList {
private:
Node* head;
public:
LinkedList() : head(nullptr) {}
~LinkedList() {
// 遍歷鏈表,依次釋放每個(gè)節(jié)點(diǎn)
Node* current = head;
while (current != nullptr) {
Node* temp = current;
current = current->next;
delete temp;
}
}
};
這樣,在釋放單鏈表對(duì)象時(shí),會(huì)調(diào)用單鏈表類(lèi)的析構(gòu)函數(shù),從而觸發(fā)每個(gè)節(jié)點(diǎn)的析構(gòu)函數(shù),實(shí)現(xiàn)高效地釋放單鏈表的節(jié)點(diǎn)。