现在是2018年8月16日20:25:09,洛杉矶时间为8.16日5:25,唱晚还没起床吧,我好想你。
静态链表,只用struct结构就可以实现目的;
#include<cstdio>
#include<algorithm>
using namespace std;
struct acw {
int address,key,next;
bool flag;
}cw[100010];
bool cmp(acw a , acw b){
if (a.flag == false || b.flag == false) return a.flag > b.flag;
else return a.key < b.key;
}
int main()
{
int n,i,begin,address,count=0;
scanf("%d%d", &n,&begin);
for (i = 0; i < n; i++)
{
scanf("%d", &address);
scanf("%d%d",&cw[address].key, &cw[address].next);
cw[address].address = address;
}
//初始化
for (i = 0; i < 100010; i++)
{
cw[i].flag = false;
}
for (int p = begin; p != -1; p = cw[p].next)
{
cw[p].flag = true;
count++;
}
if (count != 0)
{
sort(cw, cw + 100010, cmp);
printf("%d %05d\n", count, cw[0].address);
for (i = 0; i < count - 1; i++)
{
printf("%05d %d %05d\n", cw[i].address, cw[i].key, cw[i+1].address);
}
printf("%d %d -1", cw[i].address, cw[i].key);
}
else printf("0 -1");
return 0;
}
Sample Input:
5 00001
11111 100 -1
00001 0 22222
33333 100000 11111
12345 -1 33333
22222 1000 12345
Sample Output:
5 12345
12345 -1 00001
00001 0 11111
11111 100 22222
22222 1000 33333
33333 100000 -1