溫馨提示×

c語言鏈表刪除節(jié)點的方法是什么

小億
179
2023-12-27 14:44:30
欄目: 編程語言

在C語言中,鏈表刪除節(jié)點的方法有以下幾種:

  1. 遍歷查找刪除:先遍歷鏈表,找到需要刪除的節(jié)點,然后將它的前一個節(jié)點的指針指向它的后一個節(jié)點,然后釋放刪除節(jié)點的內(nèi)存空間。
void deleteNode(struct Node** head_ref, int key) {
    struct Node* temp = *head_ref;
    struct Node* prev = NULL;
  
    if (temp != NULL && temp->data == key) {
        *head_ref = temp->next;
        free(temp);
        return;
    }
  
    while (temp != NULL && temp->data != key) {
        prev = temp;
        temp = temp->next;
    }
  
    if (temp == NULL) {
        return;
    }
  
    prev->next = temp->next;
    free(temp);
}
  1. 雙指針刪除:使用兩個指針,一個指向當(dāng)前節(jié)點,另一個指向當(dāng)前節(jié)點的前一個節(jié)點。遍歷鏈表,找到需要刪除的節(jié)點后,將前一個節(jié)點的指針指向當(dāng)前節(jié)點的下一個節(jié)點,然后釋放刪除節(jié)點的內(nèi)存空間。
void deleteNode(struct Node** head_ref, int key) {
    struct Node* temp = *head_ref;
    struct Node* prev = NULL;
  
    while (temp != NULL && temp->data != key) {
        prev = temp;
        temp = temp->next;
    }
  
    if (temp == NULL) {
        return;
    }
  
    if (prev == NULL) {
        *head_ref = temp->next;
    } else {
        prev->next = temp->next;
    }
  
    free(temp);
}

需要注意的是,鏈表刪除節(jié)點時要注意處理頭節(jié)點和尾節(jié)點的情況,以及釋放刪除節(jié)點的內(nèi)存空間,避免內(nèi)存泄漏。

0