Board logo

标题: C语言经典算法之冒泡排序 [打印本页]

作者: 苹果也疯狂    时间: 2014-5-22 09:32     标题: 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);                  
}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0