【数据结构】(单链表)单链表插入排序

算法思想:将链表分为两个链表(逻辑上)一个链表默认有序(只含有一个有效节点) 另为无序链表/ 大循环 为每次循环 从无序链表拿出一个元素 将其插入有序链表中

void InsertSort(LNode *p){
	if(p->next==NULL||p->next->next==NULL)  //若链表为空或者链表中只有一个元素 返回
		return ;
		LNode *pre=p;  //指向排好序的前驱节点
		LNode *unsort=p->next->next;
		LNode *s=p->next;
		s->next=NULL;
		s=unsort;
		while(s){

			unsort=s->next;

			while(pre->next!=NULL&&pre->next->data<=s->data)
				pre=pre->next;

			s->next=pre->next;
			pre->next=s;
			pre=p;
			s=unsort;
		}
}
上一篇:数据结构—习题2.7 链表翻转(递归与迭代两种实现)LeetCode(206)


下一篇:【数据结构】(单链表)单链表选择排序