[LeetCode]83. Remove Duplicates from Sorted List
83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear onlyonce.
For example,
Given1->1->2
, return1->2
.
Given1->1->2->3->3
, return1->2->3
.
对于给定排序链表进行去重处理。
1)对于空链表或者只有一个节点的链表不存在重复的问题,故可直接返回。
2)循环条件,当节点为最后一个节点,则无需继续比较了。因为之前的比较是当前节点和后一节点进行的。所以最后一个节点已经参与过比较了。无需继续。
3)若当前节点值等于后一节点值时,为*list赋值下一个节点即可。并及时释放删除节点的内存,防止出现内存泄漏。
4)若值不相等,list指向下个next即可。
/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*deleteDuplicates(structListNode*head){if(head==NULL||head->next==NULL){returnhead;}structListNode**list=&head;while((*list)->next!=NULL){if((*list)->val==(*list)->next->val){structListNode*delete=*list;(*list)=(*list)->next;free(delete);}else{list=&(*list)->next;}}returnhead;}
注:
1)*list作为头节点出现,表示头节点。
2)*list作为其他节点时,*list具有两重意思。一是代表当前节点,二是对上一节点next的解引用。故为*list赋值即为给上一节点的next的赋值。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。