链表的排序函数,和我上一个提问都是使用了这种for循环读取指针然后对指针的值进行操作,都导致被操作的指针发生了越界错误,```
struct StuLink*Sort_Link(struct StuLink *list)
{
struct StuLink *p1,*p2,*p3=NULL;
for(p1=list;p1->next!=NULL;p1=p1->next)
for(p2=p1->next;p2!=NULL;p2=p2->next)
{
if(p1->cjcj)
{ p3->cj=p1->cj;
p3->xh=p1->xh;
p3->dj=p1->dj;
strcpy(p3->xm,p1->xm);
p1->cj=p2->cj;
p1->xh=p2->xh;
p1->dj=p2->dj;
strcpy(p1->xm,p2->xm);
p2->cj=p3->cj;
p2->xh=p3->xh;
p2->dj=p3->dj;
strcpy(p2->xm,p3->xm);
}
}
Output_Link(list);
return list;
}
贴上一次的while循环代码
//struct StuLink*Rank_Link(struct StuLink*list)
//{
// struct StuLink *p1,*p2;
// p1=list;
// for(;p1!=NULL ;p1=p1->next)
// for(p2=list;p2!=NULL;p2=p2->next)
// {
// if(p1->xh==p2->xh)
// continue;
// if(p1->cjcj)
// p1->mc++;
// }
// return list;
//}