当前位置: 代码迷 >> C语言 >> 这个对连表进行排序的函数不知道错在那里 请各位指教一下 谢谢
  详细解决方案

这个对连表进行排序的函数不知道错在那里 请各位指教一下 谢谢

热度:121   发布时间:2008-01-06 21:06:07.0
这个对连表进行排序的函数不知道错在那里 请各位指教一下 谢谢
struct student
{
    char num[4];
    char name[100];
    float score;
    struct student*next;
};
void paixu(struct student*p,int n)  //n是连表的接点数//
{
    struct student temp,*head;
    int i,j;
    head=p;
    for(i=0;i<n-1;i++)
        {for(j=0;j<n-i;j++)
            {if(strcmp(p->num,(p->next)->num)>0)
               {strcpy(temp.num,p->num);
                strcpy(p->num,(p->next)->num);
                strcpy((p->next)->num,temp.num);
                strcpy(temp.name,p->name);
                strcpy(p->name,(p->next)->name);
                strcpy((p->next)->name,temp.name);
                temp.score=p->score;
                p->score=(p->next)->score;
                (p->next)->score=temp.score;}
                p=p->next;
            }
         p=head;} //在下一伦开始时使p回到head//   
}
搜索更多相关的解决方案: num  函数  student  strcpy  temp  

----------------解决方案--------------------------------------------------------
你这就是个结构体数组元素冒泡排序
这样改:
if(strcmp(p[j]->num,(p[j+1])->num)>0)
               {strcpy(temp.num,p[j]->num);
                strcpy(p[j]->num,p[j+1]->num);
                strcpy(p[j+1]->num,temp.num);}
下面的姓名和成绩可参照这个改
----------------解决方案--------------------------------------------------------
  相关解决方案