首页 > 其他分享 >(有序)单向链表的去重(C语言)

(有序)单向链表的去重(C语言)

时间:2023-01-01 18:00:13浏览次数:44  
标签:p2 Linklist p1 指向 单向 next 链表 C语言

单向链表的去重

问题描述及分析

给定一个有序的链表,去除重复出现的元素,使每个元素只出现一次。例如一个单向链表为 1->1->2->2->3->4->4->∅ , 那么去重后得到的单向链表为 1->2->3->4->∅ 。

这里的链表保证是有序的,所以出现的重复元素都是相邻的,所以对整个链表进行一次遍历,在遍历的过程中删除这些相邻的重复元素即可。
首先,需要一个遍历指针 t 指向当前遍历到的节点,然后定义两个指针分别为 p1p2p1 指向 t 所指向的节点,而 p2 指向此时 p1 的下一个节点,如果 p2 指向节点的值与 p1 的相同,那么直接让 p1next 跳过 p2 指向 p2next 即可。有可能存在相邻很多个元素都相等,所以可以加一个循环,一次性删除多个和 p1 指向的节点的值相等的节点。

标签:p2,Linklist,p1,指向,单向,next,链表,C语言
From: https://www.cnblogs.com/MAKISE004/p/17018365.html

相关文章