【数据结构】【链表代码】移除链表元素

移除链表元素

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

  
struct ListNode* removeElements(struct ListNode* head, int val) {  
    // 创建一个虚拟头节点,以处理头节点可能被删除的情况  
    struct ListNode *dummy = (struct ListNode*)malloc(sizeof(struct ListNode)); // 分配内存给 dummy 节点  
    if (dummy == NULL) {  
        return NULL; // 内存分配失败  
    }  
    dummy->val = 0;  
    dummy->next = head;  
    struct ListNode *pre = dummy;  
    struct ListNode *cur = head;  
  
    while (cur != NULL) {  
        if (cur->val == val) {  
            // 删除当前节点  
            pre->next = cur->next;  
            free(cur); // 释放当前节点的内存,因为不再需要这个节点  
            cur = pre->next; // 移动 cur 到下一个节点  
        } else {  
            // 如果不删除当前节点,则继续遍历  
            pre = cur;  
            cur = cur->next;  
        }  
    }  
  
    // 返回新的头节点(跳过虚拟头节点)  
    struct ListNode *new_head = dummy->next;  
    free(dummy); // 释放虚拟头节点的内存  
    return new_head;  
}
相关推荐
wheeldown4 小时前
【数据结构】选择排序
数据结构·算法·排序算法
躺不平的理查德8 小时前
数据结构-链表【chapter1】【c语言版】
c语言·开发语言·数据结构·链表·visual studio
阿洵Rain8 小时前
【C++】哈希
数据结构·c++·算法·list·哈希算法
Leo.yuan8 小时前
39页PDF | 华为数据架构建设交流材料(限免下载)
数据结构·华为
半夜不咋不困8 小时前
单链表OJ题(3):合并两个有序链表、链表分割、链表的回文结构
数据结构·链表
忘梓.9 小时前
排序的秘密(1)——排序简介以及插入排序
数据结构·c++·算法·排序算法
y_m_h12 小时前
leetcode912.排序数组的题解
数据结构·算法
1 9 J12 小时前
数据结构 C/C++(实验三:队列)
c语言·数据结构·c++·算法
921正在学习编程12 小时前
数据结构之二叉树前序,中序,后序习题分析(递归图)
c语言·数据结构·算法·二叉树
毕竟秋山澪12 小时前
岛屿数量 广搜版BFS C#
数据结构·算法·宽度优先