中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言鏈表刪除節點的方法是什么

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

在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. 雙指針刪除:使用兩個指針,一個指向當前節點,另一個指向當前節點的前一個節點。遍歷鏈表,找到需要刪除的節點后,將前一個節點的指針指向當前節點的下一個節點,然后釋放刪除節點的內存空間。
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);
}

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

0
新建县| 鄢陵县| 理塘县| 鄂伦春自治旗| 保亭| 汉阴县| 平南县| 繁昌县| 晋城| 清远市| 洞口县| 克山县| 江达县| 宿迁市| 静宁县| 乌兰察布市| 镇平县| 屯昌县| 辉南县| 伊川县| 灵山县| 盐源县| 保山市| 灵武市| 长子县| 孙吴县| 张北县| 玉环县| 卢龙县| 唐海县| 那曲县| 新田县| 河南省| 山阴县| 安岳县| 商河县| 西乌| 桐城市| 弥勒县| 敦化市| 江孜县|