移除链表元素(leetcode简单)

今天更新关于单链表的leetcode

单链表的缺陷其实是很多的,单纯单链表增删查改的意义不大

1.很多OJ题目考查的都是单链表,因为缺陷多。

2.单链表更多的是去做更复杂数据结构的子结构,包括哈希表,邻接表。

链表存储数据还要看双向链表

203. 移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 

选择C模式 :

思路:

1.删除:

定义*cur=head,就是从头开始走,准备用cur->val遍历数组,从1开始,不是val,++,到2,不是val,++,到6,是val,需要free掉这个元素6,这时就是需要2的next链接到3,3的地址通过此时的cur->next可以获得,而2的next需要重新定义一个变量prev来跟随cur走,先定义*prev=head, 通过prev->next=cur->next链接2和3,

2.迭代:

2和3链接起来后,需要继续向后找,此时prev指向2,cur指向3,所以要prev=cur,然后cur=cur->next继续向后

到这里其实测试的话,程序报错,用例输入[7,7,7,7],输出7,也就是没有考虑到头删的情况

3.头删:

当第一个数据就遇到了val时,也就是cur==head,需要把head删掉,思想同删除一样,可以看下面代码

 

完整代码如下:

 链表的题会更新一段时间。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何以过春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值