标题:这个对连表进行排序的函数不知道错在那里 请各位指教一下 谢谢
只看楼主
5646
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-1-6
 问题点数:0 回复次数:1 
这个对连表进行排序的函数不知道错在那里 请各位指教一下 谢谢
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 
2008-01-06 21:06
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
得分:0 
你这就是个结构体数组元素冒泡排序
这样改:
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);}
下面的姓名和成绩可参照这个改

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2008-01-07 12:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-196183-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014657 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved