C语言链表的排序要点.doc

C语言链表的排序 /* ========================== 功能:选择排序(由小到大) 返回:指向链表表头的指针 ========================== */ /* 选择排序的基本思想就是反复从还未排好序的那些节点中, 选出键值(就是用它排序的字段,我们取学号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、继续在

文档评论(0)

1亿VIP精品文档

相关文档