我的个人网站 Cheese的个人主页http://www.cheese.ren/
博客来源 PAT 乙级 1075 链表元素分类-Cheese的个人博客PAT 乙级 1075 链表元素分类 C++http://blog.cheese.ren/95
欢迎交换友链 :-)
#include <bits/stdc++.h>
using namespace std;
int main() {
int link[100000]; // 下一结点的地址
int n; // 结点总个数
int k;
int data[100000]; // 数据
int list[100001], result_list[100001]; // 结点顺序
int list_pos=1, result_list_pos=0; // 结点顺序位置
scanf("%d %d %d", &list[0], &n, &k);
for (int i=0; i<n; i++) {
int address;
scanf("%d", &address);
scanf("%d %d", &data[address], &link[address]);
}
// 将结点按顺序排入list列表
for (int i=link[list[0]]; i!=-1; i=link[i]) {
list[list_pos++] = i;
}
// 分类
for (int i=0; i<list_pos; i++) {
if (data[list[i]] < 0) {
result_list[result_list_pos++] = list[i];
}
}
for (int i=0; i<list_pos; i++) {
if (data[list[i]] <= k && data[list[i]] >=0) {
result_list[result_list_pos++] = list[i];
}
}
for (int i=0; i<list_pos; i++) {
if (data[list[i]] > k) {
result_list[result_list_pos++] = list[i];
}
}
// 输出
for (int i=0; i<result_list_pos; i++) {
if (i == result_list_pos-1) {
printf("%05d %d -1\n", result_list[i], data[result_list[i]]);
}
else {
printf("%05d %d %05d\n", result_list[i], data[result_list[i]], result_list[i+1]);
}
}
return 0;
}