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 }
原文:https://www.cnblogs.com/Knightl8/p/14886142.html