链表排序

void sort(LinkList *&L)
{
  LinkList *p, *pre, *q;
  p = L->next->next; //p指向L的第2个数据节点
  L->next->next = NULL; //构造只含有一个数据节点的有序表
  while (p != NULL)
  {
    q = p->next; //q保存*p节点后继节点的指针
    pre = L; //从有序表开头进行比较
    while (pre->next != NULL&&pre->next->data < p->data) //在有序表中查找*p插入的前驱节点*pre
    pre = pre->next;
    p->next = pre->next; //将*p插入*pre之后
    pre->next = p;
    p = q; //扫描原链表余下的节点
  }
}

原文地址:https://www.cnblogs.com/blog-yejy/p/8023380.html