打印

链表排序问题

[复制链接]
828|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-8-13 17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
无冕之王| | 2012-8-13 17:54 | 只看该作者
方法一,
先定义一个临时结构
struct jg t_str;
用冒泡算法,对要交换的,通过t_str做内容交换。
缺点:效率低
优点:结构简单

使用特权

评论回复
板凳
无冕之王| | 2012-8-13 17:55 | 只看该作者
方法二,
结构用如下
struct jg{
  struct jg *next;
  struct stu *student;
}

struct stu{
  int no;
  char name[10];
}
用冒泡算法,对要交换位置的,直接交换 指针student.
缺点,需要2个结构完成一个单元
优点:效率高。

使用特权

评论回复
地板
gxgclg| | 2012-8-13 18:06 | 只看该作者
定义一个指向这种结构体单元的指针数组 struct jg *p[1000];先将其初始化,让每一个指针指向结构体里面1000里面的每一个元素。让p[0]指向第一个单元,p[1]指向第二个单元.....p[999]指向最后一个单元。。。然后用冒泡法排序(假设从大到小),只是在交换时,仅让指针的指向交换,并不改变链表的结构与每个单元的内容。执行完的结果是:让p[0]这个指针指向最大的那个单元,p1[1]指向其次那个,依次类推。。。p[999]指向最小那个单元。。。这种方法优点:第一、少了将链表中赋值的过程,效率会高些。第二、不改变原链表中的单元内容与顺序。。。

使用特权

评论回复
5
火箭球迷| | 2012-8-13 18:11 | 只看该作者
LS介绍的方法已经很多了,可以试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝