删除链表中重复的元素
2014-05-08 17:00
169 查看
今天做的LeetCode上的题:要求删除一个连表中重复的元素并不保留重复的元素
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
经过多次调试终于调试通了,LeetCode 上做题的好处是,对于每个你遇到的错误的情况,它都会给出你错误的例子,然后再针对自己的错误例子进行程序的改进,一开始考虑的情况没有那么完善,慢慢增加没有考虑到的情况,这也提醒我们再平时遇到问题的时候应该多考虑一些情况,尤其是端点的情况,这道题要删除重复的元素,第一种是最常见的情况,对于第二种就要多考虑了。这里用到的是保存要删除元素前一个地址的情况,第二种情况,对于一开始就遇到重复元素的,最后得到的链表的首地址要改变这点要多加考虑:下面是我的代码,感觉写的很烂,有需要完善的地方请多指点:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *deleteDuplicates(ListNode *head) { if(head==NULL) return NULL; ListNode *pre; ListNode *p; ListNode *q; int flag=0; p=head; q=head->next; while(q){ if(p->val!=q->val){ flag=1; pre=p; p=p->next; q=q->next; }else{ while(p->val==q->val){ q=q->next; if(!flag&&q==NULL){ head=q; return head; } if(flag&&q==NULL){ pre->next=NULL; return head; } } if(flag==0){ pre=q; head=pre; }else{ pre->next=q; } p=q; q=q->next; } } return head; } };
相关文章推荐
- 暑假集训第1天链表-数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除 sdutoj2122
- 数据结构实验之链表七:单链表中重复元素的删除
- 2122数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- Remove Duplicates from Sorted List 删除链表中的重复元素,保留一次
- Lintcode删除排序链表中的重复元素
- 删除链表中的重复元素II
- 删除环状单向链表中的重复元素的操作
- 删除排序链表中的重复元素
- SDUT OJ 数据结构实验之链表七:单链表中重复元素的删除
- 链表(16)----删除链表重复元素
- 删除有序链表中重复的元素
- 删除排序链表中的重复元素
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- [LeetCode] 83. Remove Duplicates from Sorted List 删除排序链表中的重复元素 @python
- 删除排序链表中的重复元素