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 }

 

posted @ 2020-03-03 16:40  wydxry  阅读(215)  评论(0编辑  收藏  举报
Live2D