C语言链表的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 22:56:05
用链表以后,每个元素并不象结构体数组那样有下标[]
引用起来就不方便了,
比如要对里面的数据进行排序输出(按平均分,每科的分高低排序等等)
typedef struct student
{
long num;
char name[10];
float score[3];
STDU *next;
}STDU;

能给我说1下怎么给他像数组一样排序吗?
[老师让做一个学生成绩管理系统,里面必然是要排序的啊,我用老潭的书,里面链表一节都没讲如何给它排序.写入文件等等..请大家帮帮忙]
用结构提数组又无法从键盘输入大小,用calloc.malloc开辟后把指针当数组用我试了,不成功.........
或者还有其他什么好方法吗?

楼上说的对!
你自己建立一个结构,然后在自己建一个函数,用数组存储,这样就好排序了。
看到你给我发的短信息了,怎么不可以创建动态数组呢?
假如你要建立的结构是这样的:
typedef struct student
{
long num;
char name;
float score;
}STDU;
然后呢
在Main函数里
Main()
{
int intsize=sizeof(STDU);
不是有calloc函数吗?
void *p=calloc(n,intsize);/*这里n是要分配的数组的大小*/
这不就相当于创建了一个数组吗?
}

或者直接STDU a[n];/*n为数组个数*/
直接调用不可以吗?

顺序链表真的不适合排序,但是也能排,很麻烦,比如,你现在第三个,第四个要互换,你可以把第二个的指针指向第四个,然后把第四个指针指向第三个,然后第三个指向第五个,这样就差不多了。

顺序链表这种数据结构不适合象数组一样排序(比如冒泡),因为这种结构中包含结构指针,链表一般是采用插入法排序的。

链表不适合排序,最好是在建链表插入各数据时就注意放在适当的位置

学习