| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 843 人关注过本帖
标题:[求助]单链表怎么排序啊?
只看楼主 加入收藏
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
 问题点数:0 回复次数:3 
[求助]单链表怎么排序啊?

单链表怎么从大到小排序啊?

这是比较6个学生的成绩(语言和数学)的大小,按从大到小输出学生信息.错哪里了啊?

(这只是一部分...)

#include <stdio.h>
#include <stdlib.h>
#define N struct student
#define S sizeof(N)

struct student
{
char name[15];
int num;
float yuwen;
float math;
N *next;
};

N *hilo(N *head)
{
int i,j;
N *p1,*str[6],*temp;
p1=head;

for(i=0;i<6;i++)
{
str[i]=p1;
p1=p1->next;
}

for(i=0;i<6;i++)
for(j=0;j<6;j++)
if((str[i]->yuwen+str[i]->math)<(str[j]->yuwen+str[j]->math))
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}

for(i=0;i<6;i++)
printf("%s %d %0.1f %0.1f\n",str[i]->name,str[i]->num,str[i]->yuwen,str[i]->math);

return head;
}

搜索更多相关主题的帖子: 单链 数学 student define include 
2007-06-04 14:57
koolism
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-3-22
收藏
得分:0 
链表是这么用str[i]操作的吗?像你这样就是把数组和链表混合起来了
链表是动态分配空间的,用malloc函数,输入一项就开辟一块空间,大小
为sizeof(N);
数组是先定义长度,是非动态的;

链表排序不是你这么排的,你这样完全是数组排序思想
for(i=0;i<6;i++)
for(j=0;j<6;j++)
if((str[i]->yuwen+str[i]->math)<(str[j]->yuwen+str[j]->math))
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
链表排序实际上是链表的插入与删除操作,这条语句if((str[i]->yuwen+str[i]->math)<(str[j]->yuwen+str[j]->math))
决定你在链表中的哪个结点位置进行操作,并且操作起来也不像你那样那么简单,要考虑被操作的结点(包括相邻结点)位置改变后的next指针的指向问题

不知道痛苦,不知道饥饿,不知道休息,只知道勇往无前...
2007-06-05 01:27
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
得分:0 

楼上大哥,这样可以吗?
你说的插入与删除我知道,但是用到排序我就不知道怎么运用了.望指教.

if(str[i]->yuwen+str[i]->math<str[j]->yuwen+str[j]->math)
{
*temp->name=*str[i]->name;
temp->num=str[i]->name;
temp->yuwen=str[i]->yuwen;
temp->math=str[i]->math;

*str[i]->name=*str[j]->name;
str[i]->num=str[j]->num;
str[i]->yuwen=str[j]->yuwen;
str[i]->math=str[j]->math;

*str[j]->name=*temp->name;
str[j]->num=temp->num;
str[j]->yuwen=temp->yuwen;
str[j]->math=temp->math;
}


2007-06-05 01:45
夜火
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-5-30
收藏
得分:0 
排序呀
象3楼那么做 链表实在没什么存在价值了
你要搞清楚
*next 是存放 下个结构体地址的
把存放的地址换下就可以了 把每一项都换掉 ......

哎 太死板了...

2007-06-05 07:58
快速回复:[求助]单链表怎么排序啊?
数据加载中...
 
   



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

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