算法总结之 在单链表中删除指定值的节点
给定一个链表的头节点head和一个整数num,请实现函数将值num的节点全部删除
方法一 利用栈或者其他容器收集的方法 时间复杂度O(N) 额外空间复杂度O(N)
将值不等于num的节点收集起来!!!哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈啊哈哈 最后将占地的节点作为新的头节点返回
package TT;import java.util.Stack;public class Test109 {public class Node{public int value;public Node next;public Node(int data){this.value=data;}}public Node removeValue1(Node head, int num){Stack<Node> stack = new Stack<Node>();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的节点,作为新的头节点,这个节点是肯定不用删除的,记为newHead。
继续往后遍历 假设当前节点为cur 如果cur节点值等于num,就将cur节点删除,如果不等于num 就令pre=cur 更新最近一个值不等于num的节点
package TT;public class Test110 {public class Node{public int value;public Node next;public Node(int data){this.value=data;}}public Node removeValue2(Node head, int 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;}}
转载于:https://www.cnblogs.com/toov5/p/7504816.html
算法总结之 在单链表中删除指定值的节点相关推荐
- 在单链表中删除指定值的节点。
在单链表中删除指定值的节点. 题目:给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除. 例如1->2->3->4->4->null,输出 ...
- 单链表中删除指定值的节点
题目 给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除. 基本思路 方法一.时间复杂度O(N),空间复杂度O(N). 利用栈或者其他存储结构.将不等于num的节点收集 ...
- C++实现之单链表中删除指定值
解题思路: (1) 新建单向链表: (2) 删除链表中的指定值: 步骤一: 排除特殊情况:头结点值等于需要删除值data,则先直接删除头部节点: 步骤二: 使用快慢指针ptemp, qtemp; ...
- 链表问题14——在单链表种删除指定值的节点(方法二)
题目 题目可参考上一篇文章,删除链表中的指定值 思路 方法二:不用任何容器,直接调整.时间复杂度O(N),空间复杂度O(1) 因为最后计划返回链表头,所以先遍历链表按顺序找到第一个不等于num的节点作 ...
- 链表问题14——在单链表种删除指定值的节点
题目 给定一个链表的头节点head和一个整数num,实现函数将值为num的节点全部删除. 原链表 删除后链表 1->2->3->4->null, num=3 1->2- ...
- 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置
题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点).请将该节点从单链表中删除. 解答: 典型的"狸猫换太子", 若要删除该 ...
- 链表问题2——在单链表中删除倒数第K个节点
题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...
- 从无头单链表中删除节点 结构之法 4
题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除. 分析与解答: 假设给定的指针为pCurrent,Node *pN ...
- 编程之美-从无头单链表中删除节点方法整理
[试题描述] 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除. 程序:
最新文章
- 网站分析数据收集方式详解
- HashMap的put和get操作
- mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享_PHP教程
- flash开发中如何实现界面代码分离
- redis维护问题总结
- nodejs shell交互_nodejs调用shell
- 不停机上线服务_【必看】10月25日本市增值税发票管理系统停机前,这些事一定要办...
- labelme标注文件转coco json,coco json转yolo txt格式,coco json转xml, labelme标注文件转分割,boxes转labelme json
- asp.net运行时动态修改主题
- 区域增长 matlab,图像分割 区域增长
- 使用Gotestwaf测试WAF检测能力
- wps 打开xml格式乱码_WPS文件打开之后是乱码
- Android动态生成答题卡,手机扫描答题卡改卷的最佳选择——ZipGrade
- Springboot 基于微信小程序的高校学生疫情在校封闭管理系统的设计与实现 毕业设计-附源码240904
- Oracle (04)日期类型.约束
- vs2008背景色配置
- rust军用船指令_给Rust实现一个简单的stackful generator(中)上下文切换
- onenote的笔记本在windows10保存的路径
- 简单3dsmax城堡
- 【R】【线性回归分析实验】