一、链表排序
思路:采用顺序插入思想,先定义指针*p,*q,*r;先让p=head->next->next,在断开head->next-next=NULL,此时,我们只需要遍历p后面元素,先用q保存p即q=p,然后p=p->next,后移动,让r=head,然后比较r->next->data的值和此时q->data的大小,直到p遍历完,此时就排序完成。
void sortList(node_t* head) {
if (head == NULL) { return; }
node_t* p = head->next->next;
head->next->next = NULL;
if (p == NULL) { return; }
node_t* q, * r;
while (p!=NULL)
{
r = head;
q = p;
p = p->next;
while (r->next!=NULL)
{
if (r->next->data > q->data) {
break;
}
r = r->next;
}
q->next = r->next;
r->next = q;
}
}