首页 » 网站推广 » php链表删除元素技巧_No82删除排序链表中的重复元素 轨范员

php链表删除元素技巧_No82删除排序链表中的重复元素 轨范员

访客 2024-12-17 0

扫一扫用手机浏览

文章目录 [+]

题目中有已排序的列表,要删除个中所有重复元素,如列表中有两个三、两个四,需删除后剩下一、二、五。

解题思路如下:

php链表删除元素技巧_No82删除排序链表中的重复元素 轨范员

先确定一个压结点,压结点的下一个指针指向一。
然后在节点的下一个节点及下下个节点都不为空时,判断它们的值是否相等。
若不相等,压结点今后移到一,因不相等不代表不可能相等,可能是一、二、二。

php链表删除元素技巧_No82删除排序链表中的重复元素 轨范员
(图片来自网络侵删)

接侧重复实行此逻辑,若压节点的下一个节点和下下个节点相等,如两个三,就从该节点开始及下一个节点判断是否即是该节点值,若全是三,就把中间这些三删除。
如题目中那样,会在到四的时候把两个三删除,此时压节点还是二,接着把两个四也删除,终极变成一、二、五。

要利用压节点的下一个节点及下下个节点,先判断边界条件,若 head 即是空或 head 的下一个即是空,就基本可确定无重复元素。

然后定义一个亚节点,单指针指向头节点,再定义一个单位 time,因会随时移动亚结点,原始亚结点不能动,末了返回结果时用,让临时变量指向亚结点的下一个节点。

此时记录一下,看它的下一个节点,然后判断,因这两个节点已确定,以是判断值是否相等,若不相等,压节点向后移动一步,如一不即是二,压节点刚开始是负一,这时变成一。
否则若相等,判断临时变量的下一个节点不即是空,就从该节点开始便利,且值即是下一个节点的值,若重复,如四个三,后面都是三,一贯判断到不重复为止。

若相等,就删除这些重复节点,如把两个三删掉,压结点是二,把压结点的下一个指向四,压接点还是二,接着重复操作,把两个四也删掉,二的下一个接点是五,返回。

没问题,再强调下思路,这是排序列表,若有重复元素必相邻,删除重复元素需定义压结点。
从开始就判断第一个节点和第二个节点是否为空,若不为空判断值是否相同,若相同,压节点下一个指向需删除这段相同节点,判断出一是一,若相同还需判断下一个节点是否还是一,向下便利,直到碰着不同元素,解释这些一要删掉。
此时压节点是负一,负一和四之间把这些节点删掉便是让负一的下一个指针直接指向四,大概便是这样的思路。
本日就到这了。

标签:

相关文章

phpdaemon过程示例技巧_Linuxdaemon进程

实现一个Linux daemon进程的基本流程如下:1. Fork一个子进程并使父进程退出,这样可以让子进程独立于终端运行。2....

网站推广 2024-12-18 阅读0 评论0