一、题目:
描述
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为1→2→3→3→4→4→5, 返回1→2→5.
给出的链表为1→1→1→2→3, 返回2→3.
二、输入输出示例:
三、代码:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
// write code here
if(head == NULL || head->next == NULL){
return head;
}
ListNode *p1,*p2;
p1 = new ListNode(0);
p1->next = head;
p2 = p1;
while(p2->next != NULL && p2->next->next != NULL){
if(p2->next->val == p2->next->next->val){
int num = p2->next->val;
while(p2->next != NULL && p2->next->val == num){
p2->next = p2->next->next;
}
}
else{
p2 = p2->next;
}
}
return p1->next;
}
};