龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C语言链表的创建与排序

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
include #include typedef strUCt STRUCT { int value; struct STRUCT *next; }TS; main() { #define N 9 int a[N],i; TS *head,*p; TS *CreateLink(int *,int); void sort(TS **); randomize(); for(i=0;i a=random(9); head=CreateLink(a,N); for(p=head;p;

  include

  #include

  typedef strUCt STRUCT {

  int value;

  struct STRUCT *next;

  }TS;

  main()

  {

  #define N 9

  int a[N],i;

  TS *head,*p;

  TS *CreateLink(int *,int);

  void sort(TS **);

  randomize();

  for(i=0;i

   a=random(9);

  head=CreateLink(a,N);

  for(p=head;p;p=p->next)

  printf("%-2d",p->value);

  putchar('

');

  sort(&head);

  for(p=head;p;p=p->next)

  printf("%-2d",p->value);

  getchar();

  }

  void sort(TS **h) /* 选择排序算法 */

  {

  TS *h1,*p,*q,*r,*s;

  h1=p=(TS *)malloc(sizeof(TS));

  p->next=*h;

  while(p->next) {

  q=p->next;

  r=p;

  while(q->next) {

  if(q->next->valuenext->value)

  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;

  free(h1);

  }

  TS *CreateLink(int *a,int n)

  {

  int i;

  TS *h,*p;

  h=NULL;

  for(i=n;i>0;i--) {

  p=(TS *)malloc(sizeof(TS));

  p->value=a[i-1];

  p->next=h;

  h=p;

  }

  return h;

  }

  

精彩图集

赞助商链接