原题链接:https://leetcode.com/problems/remove-duplicates-from-sorted-list/ 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. 给出一个已经排序好的单链表,删除里面重复的节点。 例 链表 1->1->2, return 1->2. 链表 1->1->2->3->3, return 1->2->3.
直接从头到尾遍历就行,每次元素与上一个元素比较,相同则删去。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(!head) return NULL; ListNode* pre = head, *p = head->next; if(!p) return head; int temp1 = pre->val, temp2; while(p) { temp2 = p->val; if(temp1 == temp2) { ListNode* t = p; p = p->next; pre->next = p; free(t); }else{ temp1 = temp2; pre = p; p = p->next; } } return head; } };