LeetCode 删除链表中的重复元素 (改版)
之前的题目是:LeetCode 83. 删除排序链表中的重复元素
我改了下前提条件,排序链表改为非排序链表。
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 9 struct ListNode* deleteDuplicates(struct ListNode* head){ 10 if(head==NULL||head->next==NULL) return head; 11 struct ListNode *q=head->next,*new=head,*pre; 12 new->next=NULL; 13 int flag=1; 14 while(q){ 15 flag=1; 16 new=head; 17 pre=NULL; 18 while(new){ 19 if(q->val==new->val){ 20 flag=0; 21 break; 22 }else{ 23 pre=new; 24 new=new->next; 25 } 26 } 27 if(!flag){ 28 q=q->next; 29 }else{ 30 struct ListNode *tmp=q; 31 if(pre) pre->next=q; 32 else head->next=q; 33 q=q->next; 34 tmp->next=NULL; 35 } 36 } 37 return head; 38 }