# 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);
}
链表排序
最新推荐文章于 2024-04-28 22:49:45 发布