C++單鏈表的節(jié)點(diǎn)如何高效地釋放

c++
小樊
123
2024-07-16 20:23:44

在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)。

0