转载 http://blog.csdn.net/chivalrousli/article/details/25654493
比如:1(头)->2->2->3->3->1->1(头) 去除以后的结果为1->2->3,注意头尾的1也要去掉一个。
struct node
{
int data;
node* next;
};
node* uniquelist(node* head)
{
if(head==NULL||head->next==head)
return head;
node* p,*q;
p=head;
q=head->next;
while(q!=NULL)
{
while(p->data==q->data&&q!=head)
{
p->next=q->next;
free(q);
q=p->next;
}
if(q==head) break;
p=q;
q=q->next;
}
if(p->data==q->data)
{
q->next=q->next;
free(q);
return p;
}
else return q;
}