C语言链表的创建与排序
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; }
- 上一篇:C语言中使用环境变量的技巧
- 下一篇:使用C中自带的驱动去改变字体和颜色