单链表删除值重复,想知道哪错🥹

#include "SLinkNode.cpp"
void Dsccf(SLinkNode *&L)
{
SLinkNode *p=L->next,*preq,*q;
while(p->next!=NULL)
{
q=p->next;
if(q->data==p->data)
{
preq=q;
p->next=preq->next;
free(preq);
}
else
{
p=p->next;
q=q->next;
}
}
}
int main()
{
SLinkNode *L;
InitList(L);
ElemType a[]={2,1,0,2,1,0,0,0};
int n=sizeof(a)/sizeof(a[0]);
CreateListR(L,a,n);
printf("线性表:");DispList(L);
Dsccf(L);
printf("线性表:");DispList(L);
DestroyList(L);
}

void Dsccf(SLinkNode *&L)函数修改如下,供参考:

void Dsccf(SLinkNode*& L)
{
    SLinkNode *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;
    }
}

还有错啊?

数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633