Given a sorted linked list, delete all duplicates such that each element appear onlyonce.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
题目解析:
(1)重要是一些边界的问题,例如{}。
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *deleteDuplicates(ListNode *head) {
if(head == NULL || head->next == NULL)
return head;
ListNode *p = head;
ListNode *q = p->next;
while(q != NULL)
{
if( q->val == p->val)
{
p->next = q->next;
free(q);
q = p->next;
}else{
p = q;
q = q->next;
}
}
return head;
}
int main(void)
{
ListNode *head = NULL;
deleteDuplicates(head);
system("pause");
return 0;
}