给定一个排序链表,删除所有重复的元素每个元素只留下一个。
样例
给出 1->1->2->null
,返回 1->2->null
给出 1->1->2->3->3->null
,返回 1->2->3->null
思想:通过比较前一个结点值与后一个结点值是否相等,来决定当前结点指向后一个结点or后一个结点的后一个结点
程序:
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/*
* @param head: head is the head of the linked list
* @return: head of linked list
*/
ListNode * deleteDuplicates(ListNode * head) {
// write your code here
if(head==NULL)
return NULL;//判断当前结点是否为空
ListNode *pre=head;//保存第一个结点指针
while(head->next!=NULL)//注意此处应是 head->next!=NULL,因为后面要判断head->val与head->val的值
{
if(head->val==head->next->val )
head->next=head->next->next;
else head=head->next;
}
return pre;
}
};