void RemoveDuplicates(Node** phead){
Node* p=*phead;
Node* prep=(Node*)malloc(sizeof(Node));
Node* q=(Node*)malloc(sizeof(Node));
Node* preq=(Node*)malloc(sizeof(Node));
prep->next=p;
while(p!=NULL){
q=p->next;
while(q!=NULL){
preq->next=q;
if(q->data==p->data){
if(q->next==NULL){
if(p==*phead){
*phead=p->next;
free(p);
}
else{
prep->next=p->next;
free(p);}
}
preq->next=q->next;
free(q);
}
preq=q;
q=q->next;
}
prep=p;
p=p->next;
}
}
需要将重复项全部删除原来的项也要删除,不知道哪里有问题
供参考:
void RemoveDuplicates(Node*& L)
{
Node *p = L->next, *preq, *q;
while (p != NULL)
{
preq = p;
q = p->next;
while (q) {
if (q->data == p->data){
preq->next = q->next;
free(q);
q = preq->next;
}
else{
preq = q;
q = q->next;
}
}
p = p->next;
}
}
你可以对比下我博客中的单链表操作,刚好有你要的