删除链表重复的元素
Posted seekwhale13
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除链表重复的元素相关的知识,希望对你有一定的参考价值。
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* struct ListNode *next;
* ;
*/
struct ListNode* deleteDuplicates(struct ListNode* head)
struct ListNode* cur = head;
while((cur != NULL)&&(cur->next != NULL))
if(cur->val == cur->next->val)
cur->next=cur->next->next;
else
cur=cur->next;
return head;
关键在于链表已按顺序排列,重复元素都为相邻,
指定 cur 指针指向头部 head
当 cur 和 cur.next 的存在为循环结束条件,当二者有一个不存在时说明链表没有去重复的必要了
当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个,这样就能达到去重复的效果
如果不相等则 cur 移动到下一个位置继续循环
以上是关于删除链表重复的元素的主要内容,如果未能解决你的问题,请参考以下文章