首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C语言经典算法之冒泡排序

C语言经典算法之冒泡排序

# include "stdio.h"
#include "stdlib.h"
   struct node{
     int values;
       struct node *next;
      };
   struct node *create(int [],int);
     void sort (struct node **);
      int test_data[20000]={5,9,3,4,5,7,8};
main()
{struct node *h,*p;
h=create(test_data,20000);
for(p=h;p;p=p->next) printf("%2d",p->values);
printf("\n");
sort(&h);
  for(p=h;p;p=p->next)printf("%2d" ,p->values);
    printf("\n");
}
struct node *create (int a[],int n)
{
struct node *h,*q;
for(h=NULL;n;n--)
{
q=(struct node *) malloc(sizeof(struct node));
q->values=a[n-1];
q->next=h;
h=q;
}
return h;
}
void sort (struct node **h)
{ struct node *q,*p,*r,*s,*h1;
h1=p=(struct node *)malloc(sizeof(structnode));
p->next=*h;
while(p->next!=NULL)
{ q=p->next;
r=p;                  
while (q->next!=NULL)
{if(q->next->values<r->next->values) r=q;
  q=q->next;
  }
  if(r!=p)
   { s=r->next;      
     r->next=s->next;
     s->next=p->next;
     p->next=s;
    }                           
     p=p->next;
}
    *h=h1->next;/*问题:h1在程序中做了啥用?  */
    free(h1);                  
}
返回列表