在单链表中删除指定值的节点。

题目:给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除。

例如1->2->3->4->4->null,输出1->2->3->null. num = 4。

1)第一种方法就是用栈来保存值不是num的节点,然后把这些节点进行连接即可。时间和空间都是O(N)。

2)第二种方法就是先找到第一个不是num的节点,然后接着遍历,遍历过程中遇见num删除num ,也就是pre.next = cur. next。时间为O(N),空间为O(1)。


//在单链表中删除指定值的节点。
public class RemoveValue {public static class Node{public int value;public Node next;public Node(int num){this.value = num;}}//用栈来保存不是num的节点,然后重新连接即可,时间为O(N),空间也为O(N)public static Node removeValue1(Node head,int num){Stack<Node> stack =new Stack<>();while (head != null){if (head.value != num){stack.push(head);}head = head.next;}while (!stack.isEmpty()){stack.peek().next = head;head = stack.pop();}return head;}//遇见num,删除num,所有需要保存num的前一个节点,也就是不为num的那个节点。public static Node removeValue2(Node head,int num){//找到第一个节点不是num的。while (head != null){if (head.value != num){break;}head = head.next;}Node pre = head;Node cur = head;while (cur != null){if (cur.value == num){pre.next = cur.next;}else {pre = cur;}cur = cur.next;}return head;}

在单链表中删除指定值的节点。相关推荐

  1. 单链表中删除指定值的节点

    题目 给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除. 基本思路 方法一.时间复杂度O(N),空间复杂度O(N). 利用栈或者其他存储结构.将不等于num的节点收集 ...

  2. 算法总结之 在单链表中删除指定值的节点

    给定一个链表的头节点head和一个整数num,请实现函数将值num的节点全部删除 方法一 利用栈或者其他容器收集的方法  时间复杂度O(N)  额外空间复杂度O(N) 将值不等于num的节点收集起来! ...

  3. C++实现之单链表中删除指定值

    解题思路: (1) 新建单向链表: (2) 删除链表中的指定值: 步骤一:   排除特殊情况:头结点值等于需要删除值data,则先直接删除头部节点: 步骤二: 使用快慢指针ptemp, qtemp; ...

  4. 链表问题14——在单链表种删除指定值的节点(方法二)

    题目 题目可参考上一篇文章,删除链表中的指定值 思路 方法二:不用任何容器,直接调整.时间复杂度O(N),空间复杂度O(1) 因为最后计划返回链表头,所以先遍历链表按顺序找到第一个不等于num的节点作 ...

  5. 链表问题14——在单链表种删除指定值的节点

    题目 给定一个链表的头节点head和一个整数num,实现函数将值为num的节点全部删除. 原链表 删除后链表 1->2->3->4->null,  num=3 1->2- ...

  6. 链表问题2——在单链表中删除倒数第K个节点

    题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...

  7. 从无头单链表中删除节点 结构之法 4

    题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除. 分析与解答: 假设给定的指针为pCurrent,Node *pN ...

  8. 编程之美-从无头单链表中删除节点方法整理

    [试题描述] 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除. 程序:

  9. python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法

    本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...

最新文章

  1. 04-多核多cluster多系统之间缓存一致性概述
  2. Windows上通过bat实现不同数据库之间同步部分表的部分字段数据
  3. Orion算法:GOOGLE干掉百度的核武器?
  4. Http协议(7)—Http缓存
  5. 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
  6. Python虚拟环境你会用了吗?手把手教你
  7. 针对《关于郝培强的《为什么我们招聘的时候绝不要传智播客的学生?》》的看法
  8. python从html拿到数据,python - 使用BeautifulSoup和Python从HTML文件中提取数据 - 堆栈内存溢出...
  9. sybase 连接mysql_安装sybase服务器并连接数据库
  10. Qt更改字体为思源黑体
  11. Web前端开发技术 HTML、CSS、JavaScript pdf
  12. 考研:研究生考试(十五天学完)之《高等数学-上册/下册》研究生学霸重点知识点总结之目录(函数与极限、导数与微分、微分中值定理与导数、不定积分、定积分及其应用、微分方程、空间解析几何与向量代数、多元函数
  13. 微信小程序之弹窗功能
  14. 加拿大计算机科学薪酬,加拿大最好找工作及薪酬最高的十大专业介绍
  15. hisat2-build
  16. Tensorflow2.* 加载和预处理数据之用 tf.data 加载 Numpy数据(2)
  17. 【Shader案例】镜面反射
  18. 【CSDN软件工程师能力认证学习精选】Python网络编程(socket编程)
  19. Zynq linux启动过程,详解zynq的启动步骤
  20. 想做好网络营销?这四步网络营销推广方法至关重要

热门文章

  1. 「京东开涛」使用Nginx+Lua(OpenResty)开发高性能Web应用
  2. Go---工厂模式,封装
  3. 基于安卓/android/微信小程序的课堂管理助手系统(作业管理,在线点名,在线答疑)app-#计算机毕业设计
  4. 从RVDS(ARM RealView Development Suite)迁移到RealView微控制器开发套件(MDK-ARM)
  5. Cocoa利用TexturePacker创建的纹理图集实现角色的帧动画
  6. int0低电平触发c语言,中断执行完后怎么回不去啊??? - 精华源码教程分享区 - 51单片机学习论坛 www.51c51.com - Powered by Discuz!...
  7. 周六,照了个人形象照
  8. opencv学习笔记八--答题卡识别
  9. 8个全球性编程比赛,天才程序员的梦想舞台
  10. 如何切换不同版本的JDK(win10-64位)