c语言程序|基数排序C语言代码实现

#include typedef struct { int num; int next; }slcell; //静态链表的结点类型 #define M 11 int f[M]; int e[M]; int head=0; void distribute(slcell *a,int w) { int i; int last; for(i=0; i<10; i++) f[i]=-1; for(i=head; i!=-1; i=a[i].next) { last=(a[i].num/w)%10; if(f[last]==-1) f[last]=i; else a[e[last]].next=i; e[last]=i; }}//某一次排序 void collect(slcell *a) { int i; int l = -1; for (i=0; i<10; i++) if (f[i] != -1) { if (l == -1) head = f[i]; else a[l].next = f[i]; l = e[i]; } a[l].next = -1; }//将排序好的数组恢复成静态链表 void Output(slcell *a, int head) { while (head != -1) { printf("%4d", a[head].num); head = a[head].next; } printf("n"); }//输出静态链表中的值 void main() { int i,max,k=1; slcell a[M]; printf("请依次输入%d个整数n",M); printf("请输入第1个数:"); scanf("%d",&a[0].num); a[0].next=1; max=a[0].num; for(i=1; i

    推荐阅读