1075 链表元素分类 - PAT (Basic Level) Practice (中文) (pintia.cn)
#include<bits/stdc++.h>
using namespace std;
vector<int>v[3];
struct Node
{
int data;
int next;
}node[100005];
int main()
{
//输入链表部分
int head, n, k, a;
scanf("%d%d%d", &head, &n, &k);
//用a来存放下一个节点的地址,node[a]就可以访问该地址的节点的数据和下一个节点的地址了
for (int i = 0; i < n; i++) {
scanf("%d", &a);
scanf("%d%d", &node[a].data, &node[a].next); //对应节点的数据和下一个节点的地址
}
//生成链表
//vector存放地址 node[vector]就可以访问该地址的数据和下一个节点的地址了
int tail = head;
while (tail != -1) {
int data = node[tail].data;
if (data < 0)
v[0].push_back(tail);
else if (data >= 0 && data <= k)
v[1].push_back(tail);
else
v[2].push_back(tail);
tail = node[tail].next;
}
//顺序输出
int flag = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < v[i].size(); j++) {
if (flag == 0) {
printf("%05d %d ", v[i][j], node[v[i][j]].data);
flag = 1;
}
else {
printf("%05d\n%05d %d ", v[i][j], v[i][j], node[v[i][j]].data);
}
}
}
printf("-1");
return 0;
}