测试点3在于输出排序后的首节点也要保持格式测试4是初始的输入数据的链表全为脏数据,全都是无效节点 #include <bits/stdc++.h> using namespace std; #define MAX 100010 //PAT A1052 Linked List Sorting struct Node { int now; int next; int data; bool operator<(const Node &a) const { return a.data > data; } } node[MAX]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, start; cin >> n >> start; for (int i = 0; i < n; ++i) { int address; cin >> address; node[address].now = address; cin >> node[address].data >> node[address].next; } vector<Node> v; while (start != -1) { v.push_back(node[start]); start = node[start].next; } if (v.empty()) { //全为无效数据 (测试点4 坑点) cout << "0 -1" << endl; return 0; } sort(v.begin(), v.end()); // 首节点保持格式(测试点3 坑点) printf("%d %05d\n", v.size(), v[0].now); for (int i = 0; i < v.size() - 1; ++i) { printf("%05d %d %05d\n", v[i].now, v[i].data, v[i + 1].now); } printf("%05d %d -1", v[v.size() - 1].now, v[v.size() - 1].data); return 0; }