标题:请教关于链表的排序?求找错!!
只看楼主
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:2 
看了你的排序,链表进行,你只能对数值进行排序,但是链表的顺序你就不能颠倒,后果可以想象

Maybe
2013-05-26 14:43
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
得分:2 
回复 8楼 hsjjgm
汗了,如果结构体有多个数据,这程序还有何用?
2013-05-26 14:49
永远是起点
Rank: 1
等 级:新手上路
帖 子:26
专家分:3
注 册:2013-2-11
得分:0 
一切皆有可能, 保持链域不变,只交换数据域就行了!
2013-05-26 16:46
永远是起点
Rank: 1
等 级:新手上路
帖 子:26
专家分:3
注 册:2013-2-11
得分:0 
程序代码:
void sort(PSC phead)        //链表的排序
{    
    PSC p1, p2,p3,p4,p;
    p1=phead;
int td;
char tc[50];
p2 = p1->pnext;
p3 = (PSC)malloc(sizeof(SC));
while(p1->pnext != NULL)
{
p1 = p1->pnext;
}
p4 = p1;
p1->pnext = p3;
p3->pnext = NULL;

p1=phead;
     do
    {
p2 = p1;
while(p2->pnext != NULL)
{
if(p1->score < p2->score)
{
td = p1->score;
p1->score = p2->score;
p2->score = td;
strcpy(tc, p1->name);
strcpy(p1->name, p2->name);
strcpy(p2->name, tc);
}
p2 = p2->pnext;
}
p1 = p1->pnext;
    }while(p1->pnext != NULL);
p4->pnext = NULL;
free(p3);

p = phead;   // 输出
printf("\n\t\t排序后:\n");
while(p!= NULL)
{
printf("\t\t\t%s\t\t%d\n", p->name, p->score);
p = p->pnext;
}
system("pause");
}

void  exit0(PSC phead)
{
PSC p1, p2;    
p1=phead;
while( p1!=NULL)
{    p2=p1->pnext;
free(p1);
p1=p2;
}
}

2013-05-26 17:15
永远是起点
Rank: 1
等 级:新手上路
帖 子:26
专家分:3
注 册:2013-2-11
得分:0 
回复 11楼 邓士林
恩恩, 对, 我又写了个,请指教!
2013-05-26 17:16



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




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

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