删除链表中指定的val值

这篇博客详细介绍了三种不同的方法来从链表中删除指定值的元素:1) 先后指针法,通过两个指针配合,高效地进行选择性删除;2) 尾插法,将不等于目标值的节点重新构建为新的链表;3) 哨兵位法,利用哨兵节点简化边界条件处理。这些算法都针对了链表数据结构的特点,适用于不同的场景。
摘要由CSDN通过智能技术生成

 链接:https://leetcode-cn.com/problems/remove-linked-list-elements/submissions/

//1.先后指针法(选择性删除)

struct ListNode* removeElements(struct ListNode* head, int val)

{

    struct ListNode* pre=NULL;

    struct ListNode* cur=head;

    while(cur)

    {

         if(cur->val==val)

        {

            if(pre==NULL)//单个节点的时候--头删

            {

                head= cur->next;

                free(cur);

                cur=head;

            }

            else//多个节点的时候

            {

                struct ListNode* next=cur->next;

                pre->next=cur->next;

                free(cur);

                cur=next;

            }

        }

        else 

        {

            pre=cur;

            cur=cur->next;

        }

    }

    return head;

}

//2.尾插法(选择性插入法)

//3.哨兵位法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值