溫馨提示×

C++單鏈表的刪除操作是怎樣的

c++
小樊
146
2024-07-16 20:15:47
欄目: 編程語言

在C++中,刪除單鏈表中的節(jié)點通常涉及以下步驟:

  1. 遍歷鏈表,找到要刪除的節(jié)點的前一個節(jié)點。
  2. 將前一個節(jié)點的next指針指向要刪除節(jié)點的下一個節(jié)點。
  3. 釋放要刪除的節(jié)點的內(nèi)存空間。

下面是一個示例代碼,演示如何刪除單鏈表中的節(jié)點:

#include <iostream>

// 定義鏈表節(jié)點結(jié)構(gòu)
struct Node {
    int data;
    Node* next;
    Node(int val) : data(val), next(nullptr) {}
};

// 刪除鏈表節(jié)點函數(shù)
void deleteNode(Node* head, int val) {
    Node* prev = head;
    Node* current = head->next;

    while (current != nullptr) {
        if (current->data == val) {
            prev->next = current->next;
            delete current;
            break;
        }

        prev = current;
        current = current->next;
    }
}

// 打印鏈表函數(shù)
void printList(Node* head) {
    Node* current = head->next;

    while (current != nullptr) {
        std::cout << current->data << " ";
        current = current->next;
    }
    std::cout << std::endl;
}

int main() {
    // 創(chuàng)建鏈表
    Node* head = new Node(0);
    head->next = new Node(1);
    head->next->next = new Node(2);
    head->next->next->next = new Node(3);

    std::cout << "原始鏈表:";
    printList(head);

    // 刪除節(jié)點
    deleteNode(head, 2);

    std::cout << "刪除節(jié)點后的鏈表:";
    printList(head);

    return 0;
}

以上代碼首先定義了一個鏈表節(jié)點結(jié)構(gòu)Node,然后實現(xiàn)了刪除節(jié)點的函數(shù)deleteNode和打印鏈表的函數(shù)printList。在main函數(shù)中創(chuàng)建了一個包含四個節(jié)點的鏈表,然后刪除了值為2的節(jié)點,最后打印出刪除節(jié)點后的鏈表。

0