leetcode85(刪除排序鏈表中的重複元素)--C語言實現

求:spa

給定一個排序鏈表,刪除全部含有重複數字的節點,只保留原始鏈表中 沒有重複出現 的數字。排序

示例 1:it

輸入: 1->2->3->3->4->4->5
輸出: 1->2->5

示例 2:io

輸入: 1->1->1->2->3
輸出: 2->3

 

解:List

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 
struct  ListNode* deleteDuplicates( struct  ListNode* head){
     struct  ListNode* pre = ( struct  ListNode*)malloc( sizeof ( struct  ListNode));
    pre->next = head;
     struct  ListNode* curr = pre;
     for ( struct  ListNode* tmp = head;tmp!=NULL && tmp->next!=NULL;tmp=tmp->next){
         if (tmp->val == tmp->next->val){
             while (tmp!=NULL && tmp->next!=NULL && tmp->val == tmp->next->val){
                 struct  ListNode* delNode = tmp;
                tmp = tmp->next;
                free(delNode);
            }
            curr->next = tmp->next;
        } else {
            curr->next = tmp;
            curr = curr->next;
        }
    }
     return  pre->next;
}
相關文章
相關標籤/搜索