typedef struct _WORDS
{
int num;
int level;
int idx;
_WORDS *next;
}WORDS;
WORDS *head = NULL;
int n=0;
void createWords()
{
head = (WORDS*)malloc(sizeof(WORDS));
head->num = 1;
head->level = 0;
head->idx = 0;
WORDS *q = head;
for(int i=2;i<=n;i++)
{
WORDS *p = (WORDS*)malloc(sizeof(WORDS));
p->num = i;
p->level = -1;
p->idx = -1;
p->next = NULL;
q->next = p;
q = p;
}
}
void sortNum()
{
WORDS *p = head;
int i=0;
int j=0;
while(p != NULL)
{
i=1;
if(p->level <= 0)
{
if(p->level < 0)
{
p->level = i;
i++;
}
p->idx = j;
int num = p->num;
WORDS *q = p->next;
while(q != NULL)
{
if(q->level < 0 && q->num % num == 0)
{
q->level = i;
q->idx = j;
num = q->num;
i++;
}
q = q->next;
}
j++;
}
p = p->next;
}
}
void print()
{
int level = 0;
int num = 0;
while(1)
{
WORDS *p = head;
while(p != NULL)
{
if(p->level == level)
{
printf("%3d ",p->num);
num++;
if(num == n)
break;
}
p = p->next;
}
if(num == n)
break;
level++;
printf("\n");
}
}
int search(int d)
{
int level = 0;
int num = 0;
while(1)
{
WORDS *p = head;
while(p != NULL)
{
if(p->level == level)
{
if(p->num == d)
return num+1;
num++;
}
p = p->next;
}
if(num == n)
return -1;
level++;
}
}
void main()
{
printf("输入节点数量:");
scanf("%d",&n);
printf("输入3个小于%d的整数:",n);
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
createWords();
sortNum();
print();
printf("输出排名:");
printf("%d,%d,%d",search(a),search(b),search(c));
system("pause");
}