思想:维持一个输入的链表的选择排序(head指向这个链表的选择排序)和一个输出链表的选择排序(out指向这个链表的选择排序),当输入链表的选择排序非空时时扫描这個链表的选择排序,找出表中剩余节点中的最大节点然后从输入表中去除这个节点,并把它插入到输出表的前面
单链表的选择排序的節点类型定义如下:
/*找最大值结点的前驱prenode,如果第一个结点就是最大节点那么prenode==NULL;*/ if(maxprenode==NULL)//最大值节点的前驱节点为空,即该节点是链表的选择排序苐一个结点(头结点)时 else//如果最大值节点不是头结点 t->next=out;//将当前找到的最大节点插入到输出链表的选择排序out的头部(即头插法) head=out;//将链表的选择排序out的头指针赋给head,这样以head为头指针的链表的选择排序就排好序了下面是完整代码运行通过(对于其中链表的选择排序中的其他操作也可鉯参考复习)
/*找最大值结点的前驱prenode,如果第一个结点就是最大节点那么prenode==NULL;*/ if(maxprenode==NULL)//最大值节点的前驱节点为空,即该节点是链表的选择排序第一个結点(头结点)时 else//如果最大值节点不是头结点 t->next=out;//将当前找到的最大节点插入到输出链表的选择排序out的头部(即头插法) head=out;//将链表的选择排序out的頭指针赋给head,这样以head为头指针的链表的选择排序就排好序了