思想:将原链表拆出去,定义一个新的头结点,接到原链表头部,将原链表头结点后接NULL,然后从链表中找到一个最大的节点(遍历链表过程中,再定义一个指向最大值结点的指针,一个最大值结点的前驱结点的指针,便于将其拆下来),将其使用头插法插入到原头结点后面。

//头插法
void insert(LNode *head, LNode *q){
	if(q==NULL)  return;
	q->next=head->next;
	head->next=q;
}
//找最大结点,拆下来(从待排序序列中)
LNode * chuli=(LNode *)malloc(sizeof(LNode));
chuli->next=head->next;
head->next=NULL;
while(chuli->next!=NULL){
	int max=chuli->next->data;
	LNode *p=chuli->next;
	LNode *pre=chuli;
	LNode *p_max=chuli->next;
	LNode *pre_max=chuli;
	while(p!=NULL){
		if(p->data>max){
			max=p->data;
			p_max=p;
			pre_max=pre;
		}	
		p=p->next;
		pre=pre->next;
	}
	pre_max->next=p_max->next;
	insert(head,p_max);
}