数据结构实例<三>(匹配链表所有元素删除后并返回新的链表)入门
来源:互联网 发布:mac最好用的输入法 编辑:程序博客网 时间:2024/06/04 22:52
题目:
删除链表中等于给定值val
的所有节点。
Example:
给出链表 1->2->3->3->4->5->3
, 和 val = 3
, 你需要返回删除3之后的链表:1->2->4->5
。
Function 如下:
public static void RemoveElements(LinkList<string> head, int val) { string value = val.ToString(); if (head.IsEmpty()) { Console.WriteLine("LinkList is Empty!"); } var p = new LinkListNode<string>(); var q = new LinkListNode<string>(); p = head.HeadLinkListNode; q = head.HeadLinkListNode.Next; int length = head.GetLength(); /********************for 循环***********************************/ for (int j = 1; j <= length; j++) { if (q == null) { break; } if (q.Data.Equals(value)) { p.Next = q.Next; q = q.Next; } else { p = p.Next; q = q.Next; } } /**************************while 循环****************************/ while (q != null) { if (q.Data.Equals(value)) { p.Next = q.Next; q = q.Next; } else { p = p.Next; q = q.Next; } } if (head.HeadLinkListNode.Data == value) { head.HeadLinkListNode = head.HeadLinkListNode.Next; } }
*两种循环皆可。for循环走了弯路,两者思路差不多。毕竟思想的碰撞才会得出最佳方案。
*传入的head为null和不为空是一组判定,杜绝null引用抛异常。
*最开始我是以p为参考系依据判定匹配字符。发现到最后会丢失链表数据,原因是因为p作为头指针,指向下一级元素,头指针被替换(Remove)。
*反观之后,我们逆向思考,以q(p.next)节点思考,下一级节点作为操作。把head留作最后处理。
*操作循环的依据是head下级节点不为null,即NEXT有值。
*循环体内就是是否匹配元素,不匹配pq相继指向下一个元素。
*匹配之后直接跳过q,pq相继指向q.next.q 作为参考判断指针,必须逐级移动(检索匹配)。p作为操作指针过滤节点。
*循环完成后,q为空,p为过滤掉的最后一个节点。此时head已经过滤完成,输出数据即可。
p q 作为工具指针操作了链表head,最后返回head,即为所求。
0 0
- 数据结构实例<三>(匹配链表所有元素删除后并返回新的链表)入门
- 链表所有重复元素的删除
- 顺序表来实现函数:删除最小值并返回删除元素,空出位置用尾部元素来填补,删除与给定值相同的所有的元素,删除给定值s,t(s<t)之间的元素
- jQuery(三)4.从DOM中删除所有匹配的元素
- 删除顺序表中所有值为x的元素(保持删除后元素相对位置不变)
- 从链表删除所有值为val的元素
- 删除链表中指定的所有元素
- 给定一个数组arr和一个目标数targrt,删除所有目标值元素,并返回新长度
- 数据结构—链表元素的删除和插入
- LeeCode 删除数组中某一特定值的元素,并返回新的数组长度
- C编写循环链表,并删除其中的元素
- 删除有序数组中的重复元素,并返回数组的新长度
- LintCode【入门】删除链表中的元素
- lintcode-入门-删除链表中的元素
- 链表逆转以及删除所有重复元素
- 数据结构(线性表的操作:建立表,插入元素,删除元素,取元素,置空)
- 数据结构复习-顺序表L中删除重复元素,并使元素相对次序保持不变
- 生成单向链表 并删除链表中某个元素
- scanner二次输入
- Maven生成可以直接运行的jar包的多种方式
- 第一章 初始大数据
- 【AJAX】AJAX小结(二)
- 山东驴友和梁定郊小兄弟一起川藏游
- 数据结构实例<三>(匹配链表所有元素删除后并返回新的链表)入门
- Senparc.Weixin.MP 微信公众平台开发教程(2)自定义菜单
- java 可变参数的问题 String... params
- SystemUI之USB2(Framework UEvent -> SystemUI)
- Ext获取各个值
- 千里行创始人梁闪贿的人生
- centos增加环境变量
- asp.net core mvc剖析:KestrelServer
- CentOS 安装MySQL(rpm)提示错误Header V3 DSA/SHA1 Signature