溫馨提示×

c++ listnode刪除節點的技巧

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

在C++中,刪除單鏈表中的節點通常需要維護前一個節點以及當前節點。以下是一個刪除單鏈表中特定節點的示例代碼:

#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);

    // 刪除第二個節點
    deleteNode(head->next);

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

    return 0;
}

在上面的示例中,刪除節點的函數deleteNode首先檢查節點和其后一個節點是否存在,如果存在,就將后一個節點的值復制給當前節點,并刪除后一個節點。這種方法可以在常量時間內刪除指定節點,而不需要遍歷整個鏈表。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女