链表的排序

来源:互联网 发布:12864显示一个数组 编辑:程序博客网 时间:2024/05/16 14:00

struct node heada, headb;
link t, u, x, a = &heada, b;

//a标示链表的首节点,是一个哑节点,item为空
for(i = 0; t = a; i < N ; i++){
   //为后面一个节点分配空间
   t->next = malloc(sizeof *t);
   //t移动,并指向最后一个节点
   t = t->next;
   //有效节点的后面一个节点设置为空
   t->next = NULL; 
   //随机生成1000之内的整数
   t->item = rand()%1000;
}

//排序
b = &headb; b->next = NULL;
for(t = a->next; t !=NULL; t = u){
  //每迭代一次,t指向下一个节点
  u = t->next;
 
   //遍历链表b,将其中的值与t->item比较
   for(x = b; x->next != NULL; x = x->next)
    //如果x的值比较大,则终止遍历,进行插入
    if(x->next->item > t->item) break;
   //元素的插入
   t->next = x->next;
   x->next = t;
}