题目:
思路:
如:
是将链表中所有重复的数都删除,创建一个虚拟头结点,然后遍历链表,
因为是升序排序的链表,所以当前后俩个数相同时,
用一个变量记录改值,接着while循环比较,
链表后是否有与该数相同的数据,如果有就删除,
如果没有,就指向下一个节点,继续比较,直到循环结束。
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head)
{
// write code here
ListNode *p=new ListNode(0);
p->next=head;
ListNode *q=p;
while(q->next!=NULL&&q->next->next!=NULL)
{
if(q->next->val==q->next->next->val)
{
int temp=q->next->val;
while(q->next!=NULL&&q->next->val==temp)
{
q->next=q->next->next;
}
}
else
{
q=q->next;
}
}
return p->next;
}
};