链表排序

来源:互联网 发布:手机数据库查看器 编辑:程序博客网 时间:2024/05/16 18:30
# 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[7]= {5,9,3,4,5,7,8};main(){    struct node *h,*p;    h=create(test_data,7);    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, *p;    p=q=h=NULL;    int flag=-1;    for(; n; n--)    {        q=(struct node *) malloc(sizeof(struct node));        q->values=a[n-1];        if (flag==-1)        {            flag=1;            q->next=NULL;            p=h=q;        }        else        {            p->next=q;            p=q;            p->next=NULL;        }    }    return h;}void sort (struct node **h){    struct node *q,*p,*r,*s,*h1;    h1=p=(struct node *)malloc(sizeof(struct node));    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);}

原创粉丝点击