83. 删除排序链表中的重复元素

 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 }

 

posted @ 2021-06-15 16:49  传说中的旅行者  阅读(44)  评论(0)    收藏  举报