当前位置: 代码迷 >> 综合 >> lesson20 有一个带头结点的单链表L,设计一个算法使其元素递增有序。
  详细解决方案

lesson20 有一个带头结点的单链表L,设计一个算法使其元素递增有序。

热度:21   发布时间:2024-02-23 08:58:27.0

思想:

直接插入排序算法

代码:

void sort(LinkList * &L){LinkList *p,*pre,*r;p = L->next->next;		// 先保存下L的第二个元素,因为下一步要将L变成只有一个元素的有序表; p指针用来遍历无序区 L->next->next = NULL;	// 将L变成只有一个元素的有序表// 从L的第二个元素开始遍历整个L直至表尾 while(p != NULL){r = p->next; pre = L;	// 先用pre来保存L,pre始终指向有序区while(pre->next !=NULL && p->data > pre->next->data) // 遍历pre所指向的有序表L,直至找到比p大的节点 pre = pre->next; p->next = pre->next;//将p插到pre之后,头插法 pre->next = p;p = r;	} 
}