struct ListNode* removeElements(struct ListNode* head, int val) {
    struct ListNode *pre, *cur, *next;
    pre = NULL;
    cur = head;
    while (cur != NULL) {
        if (cur->val == val) {
            next = cur->next;
            if (pre != NULL) {
                pre->next = next;
            } else {
                head = next;
            }
            free(cur);
            cur = next;
        } else {
            pre = cur;
            cur = cur->next;
        }
    }
    return head;
}

其中,struct ListNode为链表节点的结构体类型,包括一个int类型的val表示节点的值,和一个指向下一个节点的指针next。该函数的作用是删除链表中所有值为val的节点。具体实现过程为,遍历整个链表,如果当前节点的值等于val,则将当前节点从链表中删除,并将当前节点指向下一个节点;否则,将pre指向当前节点,将当前节点指向下一个节点。需要注意的是,当被删除的节点是链表的头节点时,需要更新head指针的指向

最简单的删除链表元素的C语言代码

原文地址: https://www.cveoy.top/t/topic/ey7m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录