豆搜网 文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > 高等教育 > 工学 > 链表排序
侵权投诉

链表排序

==========================

功能:选择排序(由小到大)

返回:指向链表表头的指针

==========================

*/

/*

选择排序的基本思想就是反复从还未排好序的那些节点中,

选出键值(就是用它排序的字段,我们取学号num为键值)最小的节点, 依次重新组合成一个链表。

我认为写链表这类程序,关键是理解:

head存储的是第一个节点的地址,head->next存储的是第二个节点的地址; 任意一个节点p的地址,只能通过它前一个节点的next来求得。

单向链表的选择排序图示:

---->[1]---->[3]---->[2]...---->[n]---->[NULL](原链表)

head 1->next 3->next 2->next n->next

---->[NULL](空链表)

first

tail

---->[1]---->[2]---->[3]...---->[n]---->[NULL](排序后链表) first 1->next 2->next 3->next tail->next

图10:有N个节点的链表选择排序

1、先在原链表中找最小的,找到一个后就把它放到另一个空的链表中;

2、空链表中安放第一个进来的节点,产生一个有序链表,并且让它在原链表中分离出来(此时要注意原链表中出来的是第一个节点还是中间其它节点);

3、继续在原链表中找下一个最小的,找到后把它放入有序链表的尾指针的next,然后它变成其尾指针;

*/

struct student *SelectSort(struct student *head)

{

struct student *first; /*排列后有序链的表头指针*/

struct student *tail; /*排列后有序链的表尾指针*/

struct student *p_min; /*保留键值更小的节点的前驱节点的指针*/ struct student *min; /*存储最小节点*/

struct student *p; /*当前比较的节点*/

first = NULL;

while (head != NULL) /*在链表中找键值最小的节点。*/

{

第1页

热门文档

相关文档

  • 链表排序算法总结

    链表排序算法总结_计算机软件及应用_IT/计算机_专业资料。链表排序算法总结这个星期做数据结构课设, 涉及到两个基于链表的排序算法, 分别是基于链表的选择排序算 法...

  • 链表实现排序算法

    2.本设计从总体上来看,可划分为 4 个模块,其功能及算法如下: 示意图:创建链表 : 显示链表 直接插入法排序 显示链表 图 1.1 链表的基本操作功能框架图 刘...

  • 链表排序

    链表排序_IT/计算机_专业资料。功能:选择排序(由小到大) 返回:指向链表表头的指针 === */ /* 选择排序的基本思想就是反复从还未排好序的那些节点中,选出键值...

  • 链表排序方法分析

    链表排序方法分析_工学_高等教育_教育专区。链表的排序分类: 31 .NET 2005-12-14 17:11 4766 人阅读 评论(5) 收藏 举报 === 功能:选择排序(由小到大) 返...

  • 链表的两种排序方法

    //本程序演示链表的两种排序方法 //当然还可以其他的一些排序方法 //比如选择法 //但是只要搞懂了链表的连接,插入方法 //其他排序方法都易懂 #include<iostream>...

  • 冒泡排序链表

    链表冒泡排序 任意两个相邻节点p、q位置互换图示: 假设p1->next指向p,那么显然p1->next->next就指向q, p1->next->next->next就指向q的后继节点,我们用p2...

  • 链表排序思路

    链表排序链表排序隐藏>> === 功能:选择排序(由小到大) 返回:指向链表表头的指针 === */ /* 选择排序的基本思想就是反复从还未排好序的那些节点中, 选出键...

  • 链表排序

    单向链表的选择排序图示: --->[1]--->[3]--->[2]...--->[n]--->[NULL](原链表) head 1->next 3->next 2->next n->next --->[NULL](空...

  • 链表选择法排序图解

    链表选择法排序图解_IT/计算机_专业资料。c语言链表排序链表选择法排序图解 void linkSort(LinkList l) { Node *p,*q,*m,*n; Node *temp1,*temp2; if(l...

  • 链表冒泡排序

    //创建一个链表先 Head=Create(); // printf("%d",Head->data); show(Head);//显示一个无序的链表链表 squence(Head);//冒泡排序 show(Head); return...

站点地图 | 文档上传 | 侵权投诉 | 手机版
新浪认证  诚信网站  绿色网站  可信网站   非经营性网站备案
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.docsou.com All Rights Reserved.  闽ICP备15022310号-9  闽公网安备 35021102001881号  email
返回顶部