给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode node;
struct ListNode* deleteDuplicates(struct ListNode* head){
struct ListNode* dummyHead = (node* )malloc(sizeof(node));
dummyHead->next = head;
struct ListNode* pre = dummyHead;
struct ListNode* cur;
struct ListNode* difNode;
cur = difNode = head;
int curRepeatnum = 0;
while(cur){
if(difNode&&difNode->val==cur->val){
++curRepeatnum;
difNode = difNode->next;
}else{
if(curRepeatnum > 1){
pre->next = difNode;
cur = difNode;
}else{
cur = difNode;
pre = pre->next;
}
curRepeatnum = 0;
}
}
return dummyHead->next;
}