给定一个已排序的链表的头
head
, 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。示例 1:
输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5]示例 2:
输入:head = [1,1,1,2,3] 输出:[2,3]
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
struct ListNode* deleteDuplicates(struct ListNode* head) {//设置虚拟头节点,指向headstruct ListNode* list;list=(struct ListNode*)malloc(sizeof(struct ListNode));list->next=head;//设置指针cur,指向虚拟节点struct ListNode* cur;cur=list;while(cur->next!=NULL&&cur->next->next!=NULL){if(cur->next->val==cur->next->next->val){//保存重复出现的元素int x=cur->next->val;//删除重复出现的元素while(cur->next!=NULL&&cur->next->val==x){cur->next=cur->next->next;}}else{cur=cur->next;}}return list->next;
}