如题,出题人原本打算是邻接表啊,怎么全都是双关键字排序,一个链表都没有。
#include<iostream>
#include<cstdio>
#define max(a, b) a>b? a:b
const int N=10005;
struct Node
{
int rank;
Node *nxt;
Node(int rank=0, Node *nxt=NULL):
rank(rank), nxt(nxt) {}
void Print()
{
printf("%d ", rank);
if(nxt) nxt->Print();
}
void Print_end()
{
if(nxt)
{
printf("%d ", rank);
nxt->Print_end();
}
else printf("%d", rank);
}
}*head[N];
void Addnode(int value, int pos)
{
head[value]=new Node(pos, head[value]);
}
inline int read()
{
int t=0, f=0; char c;
while(!isdigit(c=getchar())) f|=(c=='-');
do t=(t<<3)+(t<<1)+c-'0';
while(isdigit(c=getchar()));
return f? -t:t;
}
int main()
{
int n=read(), t, zd=0;
for(int i=1; i<=n; i++)
t=read(), zd=max(zd, t), Addnode(t, i);
for(int i=0; i<zd; i++)
if(head[i]) head[i]->Print();
head[zd]->Print_end();
return 0;
}