C言語でノードを削除する方法は何ですか。

– C言語では、リストからノードを削除する方法はいくつかあります。

  1. リストの走査と削除:まずリストを走査し、削除するノードを見つけ、それを削除する直前のノードのポインタを削除するノードの次のノードに向け、その後、削除されたノードのメモリスペースを解放します。
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. 双ポインタによる削除:現在のノードを指す1つのポインタと、現在のノードの直前のノードを指すもう1つのポインタを使用します。リストを走査し、削除する必要があるノードを見つけたら、直前のノードのポインタを現在のノードの次のノードを指すようにし、削除するノードのメモリ空間を解放します。
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);
}

リンクリストからノードを削除する際には、ヘッドノードとテールノードの処理に注意を払う必要があり、削除されたノードのメモリ空間を解放し、メモリリークを防ぐことが重要です。

bannerAds