本文共 528 字,大约阅读时间需要 1 分钟。
要删除排序链表中重复数字的节点,可以使用两种方法:
引入哑节点:创建一个虚拟节点 node
,将其 next
指向原链表的头结点。这样处理起来对头节点的特殊情况更友好。
定义指针:用 p
指针指向链表的头节点,用 q
指向虚拟节点 node
。
遍历链表:
p
或 p.next
为 null
时,终止循环。p
和 p.next
的值是否不同。如果不同,q
移动到 p
,然后 p
移动到下一个节点。p
继续移动,直到找到最后一个值相同的节点。然后 q
的下一个指向 p
的下一个节点,p
跳到下一个节点。返回结果:返回虚拟节点 node
的下一个节点,即为处理后的链表头。
这种方法通过一次遍历处理所有重复节点,适合处理连续重复的情况。
递归终止条件:如果当前节点或其下一个为 null
,直接返回当前节点。
递归判断:
递归方法适合处理非连续重复节点,但在遇到多个连续重复时,需要多次跳过才能达到终止,增加了递归深度。
两种方法各有优劣,选择哪种取决于具体需求和优化目标。
转载地址:http://fiyiz.baihongyu.com/