链表的排序分类:31
NET2005-12-1417:114766人阅读评论(5)收藏举报==========================功能:选择排序(由小到大)返回:指向链表表头的指针==========================*//*选择排序的基本思想就是反复从还未排好序的那些节点中,选出键值(就是用它排序的字段,我们取学号num为键值)最小的节点,依次重新组合成一个链表
我认为写链表这类程序,关键是理解:head存储的是第一个节点的地址,head->next存储的是第二个节点的地址;任意一个节点p的地址,只能通过它前一个节点的next来求得
单向链表的选择排序图示:---->[1]---->[3]---->[2]
---->[n]---->[NULL](原链表)head1->next3->next2->nextn->next---->[NULL](空链表)firsttail---->[1]---->[2]---->[3]
---->[n]---->[NULL](排序后链表)first1->next2->next3->nexttail->next图10:有N个节点的链表选择排序1、先在原链表中找最小的,找到一个后就把它放到另一个空的链表中;2、空链表中安放第一个进来的节点,产生一个有序链表,并且让它在原链表中分离出来(此时要注意原链表中出来的是第一个节点还是中间其它节点);3、继续在原链表中找下一个最小的,找到后把它放入有序链表的尾指针的next,然后它变成其尾指针;*/structstudent*SelectSort(structstudent*head){structstudent*first;/*排列后有序链的表头指针*/structstudent*tail;/*排列后有序链的表尾指针*/structstudent*p_min;/*保留键值更