1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 
 9 
10 struct ListNode* removeDuplicateNodes(struct ListNode* head){
11     int sum[30000];
12     for(int i=0;i<30000;i++) //不加这个的话,初始化可能不全是0
13     {
14         sum[i]=0;
15     }
16     struct ListNode* p =(struct ListNode *)malloc(sizeof(struct ListNode)),*tail;
17     p->next = NULL;
18     tail = p;
19 
20     while(head)
21     {
22         sum[head->val]++;
23         if(sum[head->val]==1)
24         {
25              struct ListNode* s =(struct ListNode *)malloc(sizeof(struct ListNode));
26              s->val = head->val;
27              s->next = NULL;
28              tail->next = s;
29              tail = s;
30         }
31 
32         head = head->next;
33     }
34 
35     return p->next;
36 }