#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#define KEYN 3
struct ele{
int key;
struct ele *link;
};
void bases(ele **h)
{
ele *head[10],*tail[10],*p,*u;
int factor=1,i,j;
p=*h;
for(i=0;i<KEYN;i++)
{
for(j=0;j<10;j++)
{head[j]=NULL;
tail[j]=NULL;
}
while(p)
{
u=p->link;
j=(p->key/factor)%10;
if(head[j]==NULL)
head[j]=p;
else
tail[j]->link=p;
tail[j]=p;
tail[j]->link=NULL;
p=u;
}
p=NULL;
for(j=0;j<10;j++)
{
if(head[j]==NULL)
continue;
if(p==NULL)
p=head[j];
else
u->link=head[j];
u=tail[j];
}
factor*=10;
}
*h=p;
}
void main()
{
ele *h,*u;
int a[10];
cout<<"输入10个数:"<<endl;
for(int i=0;i<10;i++)
cin>>a[i];
h=NULL; /*先形成一个空链表*/
for(i=0;i<10;i++)
{ /*任意形成一个链表*/
u=new(ele);
u->key=a[i];
u->link=h;
h=u;
}
bases(&h); /*排序*/
for(u=h;u;u=u->link) /*顺序输出链表各表元的链值*/
cout<<u->key<<' ';
cout<<endl;
}
posted on 2006-05-12 10:32
小歪 阅读(846)
评论(0) 编辑 收藏 引用