溫馨提示×

c++ listnode刪除節(jié)點(diǎn)的技巧

c++
小樊
87
2024-07-24 14:23:12
欄目: 編程語言

在C++中,刪除單鏈表中的節(jié)點(diǎn)通常需要維護(hù)前一個(gè)節(jié)點(diǎn)以及當(dāng)前節(jié)點(diǎn)。以下是一個(gè)刪除單鏈表中特定節(jié)點(diǎn)的示例代碼:

#include <iostream>

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

void deleteNode(ListNode* node) {
    if (node != nullptr && node->next != nullptr) {
        ListNode* temp = node->next;
        node->val = temp->val;
        node->next = temp->next;
        delete temp;
    }
}

int main() {
    ListNode* head = new ListNode(1);
    head->next = new ListNode(2);
    head->next->next = new ListNode(3);

    // 刪除第二個(gè)節(jié)點(diǎn)
    deleteNode(head->next);

    // 打印剩余節(jié)點(diǎn)
    ListNode* curr = head;
    while (curr != nullptr) {
        std::cout << curr->val << " ";
        curr = curr->next;
    }

    return 0;
}

在上面的示例中,刪除節(jié)點(diǎn)的函數(shù)deleteNode首先檢查節(jié)點(diǎn)和其后一個(gè)節(jié)點(diǎn)是否存在,如果存在,就將后一個(gè)節(jié)點(diǎn)的值復(fù)制給當(dāng)前節(jié)點(diǎn),并刪除后一個(gè)節(jié)點(diǎn)。這種方法可以在常量時(shí)間內(nèi)刪除指定節(jié)點(diǎn),而不需要遍歷整個(gè)鏈表。

0