==========================
功能:选择排序(由小到大)
返回:指向链表表头的指针
==========================
*/
/*
选择排序的基本思想就是反复从还未排好序的那些节点中,
选出键值(就是用它排序的字段,我们取学号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) /*在链表中找键值最小的节点。*/
{
链表排序算法总结_计算机软件及应用_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...
闽公网安备 35021102001881号 
热门文档