LeetCode 83 Remove Duplicates from Sorted List(链表操作)

来源:互联网 发布:凤凰金融 知乎 编辑:程序博客网 时间:2024/05/22 03:37

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

题目大意:给出一个排好序的链表,去掉里面的重复元素。

解题思路:遍历链表,如果某一结点的值与下一结点的值相同,那么就删除下一结点。

代码如下:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head) {    if(!head) return NULL;    if(!head->next) return head;    for(struct ListNode* now = head, * nxt = now->next;nxt;){        if(now->val == nxt->val){            struct ListNode* tmp = nxt;            nxt = nxt->next;            now->next = nxt;            free(tmp);        }else{            now = nxt;            nxt = nxt->next;        }    }    return head;}

0 0