1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * struct ListNode *next;
6 * };
7 */
8
9 /*思路:先建立一个带头结点的空链表,然后先插入第一个元素,然后再比较旧链表和新链表的元素值,不同再插入,
10 也可以把不同的值都放入一个数组,然后再根据数组建表
11 */
12 struct ListNode* deleteDuplicates(struct ListNode* head){
13 struct ListNode * h1 = (struct ListNode * )malloc(sizeof(struct ListNode)),*tail;
14 h1->next = NULL;
15 tail = h1;
16 int count = 0;
17 while(head)
18 {
19 //if(head->val != head->next->val)这句到了最后一个节点就会出错
20 if(count==0)
21 {
22 struct ListNode * h2 = (struct ListNode * )malloc(sizeof(struct ListNode));
23 h2->val = head->val;
24 h2->next = NULL;
25 tail->next = h2;
26 tail = h2;
27 count++;
28 }else{
29 if(tail->val!=head->val){
30 struct ListNode * h2 = (struct ListNode * )malloc(sizeof(struct ListNode));
31 h2->val = head->val;
32 h2->next = NULL;
33 tail->next = h2;
34 tail = h2;
35 }
36 }
37 head = head->next;
38 }
39
40 return h1->next;
41 }