文章目录

  • 思路
    • 方法1
    • 方法2
  • 代码
    • 方法1

思路

方法1

下面提供了方法1的代码,可供参考
ret指针做返回链表的头指针,last做返回链表的尾指针
第一步:找头

使用指针p遍历链表,找到第一个val值不为给定val值的结构体,将其赋给ret指针,并使得last指针指向当前返回指针尾部,也就是ret指针指向的地方(因为当前返回链表长度为1)

第二步:填尾
使用指针p遍历链表,找到val值不为给定val值的结构体将其赋给last指针的next,然后调整last使其再次指向返回链表尾部

方法2

方法2较为简单,未给出代码实现
第一步:
定义一个虚的头部指针ret,使得ret->指向head,一个遍历指针p = ret

第二步:
若p->next->val = val,说明p->next需要被剔除,则令p = p->next->next,如此循环直至遍历整个链表
最后去掉我们先前定义的虚的头部指针,返回ret->next即可

代码

方法1

struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode *ret = NULL, *last = NULL, *p = head;while(p!=NULL){if(ret==NULL){if(p->val!=val){ret = p;p = p->next;last = ret;last->next = NULL;}else{p = p->next;}}else{if(p->val!=val){last->next = p;p = p->next;last = last->next;last->next = NULL;}else{p = p->next;}}}return ret;
}

Leetcode题库203.移除链表元素(尾指针填充 / 虚头指针定义 c实现)相关推荐

  1. json移除一个元素_leetcode:203.移除链表元素,听说用虚拟头节点会方便很多?

    链表操作中,可以使用原链表来直接进行删除操作,也可以设置一个虚拟头结点在进行删除操作,接下来看一看哪种方式更方便. ❞ 第203题:移除链表元素 题意:删除链表中等于给定值 val 的所有节点. 思路 ...

  2. LeetCode刷题日记 203. 移除链表元素

    删除链表中等于给定值 val 的所有节点. /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode ...

  3. LeetCode Algorithm 203. 移除链表元素

    203. 移除链表元素 Ideas 这题其实很简单,从头开始遍历,只要遇到node->val==val的通通删除就OK了. Code C++ class Solution {public:Lis ...

  4. Java实现 LeetCode 203 移除链表元素

    203. 移除链表元素 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2 ...

  5. 203. 移除链表元素 力扣 c语言

    203. 移除链表元素 难度简单843 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 方法1 迭代 也可 ...

  6. LeetCode-链表-203. 移除链表元素

    描述 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 示例 1: 输入:head ...

  7. Suzy找到实习了吗Day 3 | 链表开始啦 203移除链表元素 707设计链表 206 反转链表

    定义链表的结构 class ListNode:def __init__(self, val, next=None): #构造函数self.val = valself.next = next 尾部nod ...

  8. Leetcode 203. 移除链表元素 (每日一题 20210914)

    给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 .示例 1:输入:head = [1,2,6,3,4,5,6] ...

  9. leetcode 203. 移除链表元素

    题目 思路 经典的小弟大哥解法: 小弟踩着大哥的脚印 大哥先走一步 题解 // Definition for singly-linked list. class ListNode {int val;L ...

最新文章

  1. 什么是泛型,为什么要使用泛型? 泛型类和泛型方法的实现以及限定通配符的使用。什么是泛型擦除,为什么有泛型擦除,泛型擦除到底是怎么实现的
  2. 番茄花园win11 32位官方纯净版镜像v2021.07
  3. 作者:杨琪,数据堂(北京)科技股份有限公司企业发展部副总监。
  4. 查找数组连成环形的和最大的连续子数组
  5. python中os.path.basename的使用
  6. 云计算解码:技术架构和产业运营
  7. java 集成ibm mq 教程_IBM MQ JMS 与spring的整合
  8. web 摄像头拍照并上传
  9. MySQL到mongodb中间件_Bifrost: Bifrost ---- 面向生产环境的 MySQL 同步到Redis,MongoDB等服务的异构中间件...
  10. su vary注册机_vray for sketchup2018下载
  11. 手机怎么用外嵌字幕_iphone 12发布 ! “预购、定金、尾款、换手机”用英语怎么说?...
  12. Mac 如何免费支持NTFS 格式移动硬盘读写
  13. 怎么在qq空间引流?QQ空间生日栏怎么引流?
  14. 计算机科学与专业大学排名,计算机科学与技术专业大学排名
  15. VR和AR的区别是什么?-粤嵌教育
  16. js的数据类型,深拷贝和浅拷贝的原理,loda实现一个深拷贝
  17. Matlab 函数circShift、psf2otf 的 python(Numpy)实现
  18. 函数function的使用方法
  19. 山科计算机科学与技术学院,山东科技大学-计算机科学与工程学院
  20. esp32-s2 wifi

热门文章

  1. Android-----Resources
  2. [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站防护
  3. 【数据结构与算法】之深入解析“有效的数独”的求解思路与算法示例
  4. OpenGL之简单渲染一个三角形
  5. LeetCode Algorithm 530. 二叉搜索树的最小绝对差
  6. 【Linux】一步一步学Linux——Bash常用快捷键(11)
  7. python素材库_python的JSON库
  8. select选择后生成html,Javascript - 从select中添加选择列表
  9. 进程wait()与waitpid()
  10. 每天一道LeetCode-----给定二维数组代表海域和岛屿,计算有多少个孤岛