链表升序排序(降序)

#include

创新互联公司服务紧随时代发展步伐,进行技术革新和技术进步,经过十年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行网站设计制作、成都网站制作、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

#include

#define N 5

typedef struct node{

   int  data;

   struct node * next;

}ElemSN;

ElemSN  * Createlink(int a[],int n){

       int i;

       ElemSN * h=NULL, * p;

       for( i=N-1;i>=0;i--){

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

      p->data =a[i];

      p->next=h;

      h=p;

        }

return h;

   }

void printlink(ElemSN * h){

          ElemSN * p;

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

       printf("%d\n",p->data);

   }

 ElemSN* SelectSont(ElemSN*h)  {

         ElemSN*p,*q,*Pm,*Qm,*h2;   //pq指针联动,Pm最大值指针,Qm最大指针的前一结点 ,h2头结点

         h2=NULL;

while(h){                                //结束条件是头指针为空

   for(Pm=q=h,p=h->next;p;q=p,p=p->next){   

   if(Pm->data>p->data){

         Pm=p;

Qm=q;

   }

   }                                        //for结束,Pm指的是最大值结点

       if(Pm-h)

   Qm->next=Pm->next;    //不是头指针

else

   h=h->next;                      //是头指针

       Pm->next=h2;                    //最大值放在头结点

       h2=Pm;                              //设置头指针

    }

return h2;

}

int main(void){

int a[N]={10,2,80,5,4};

ElemSN * head;

        head=Createlink(a,9);

head=SelectSont(head);

printlink(head);

}



当前题目:链表升序排序(降序)
分享地址:http://pwwzsj.com/article/jpjcjs.html