这是我的第一篇PAT文章,可能在算法中JAVA一直不是那么主流吧,好多的大手子都是用C++做题,但向我这样的菜鸡只会用JAVA,然后网上找答案也都是C++做的,所以准备写一些java的PAT答案以供参考。因为水平有限肯定会有很多问题,希望大家多多指正。
输入样例:
00100 9 10
23333 10 27777
00000 0 99999
00100 18 12309
68237 -6 23333
33218 -4 00000
48652 -2 -1
99999 5 68237
27777 11 48652
12309 7 33218
输出样例:
33218 -4 68237
68237 -6 48652
48652 -2 12309
12309 7 00000
00000 0 99999
99999 5 23333
23333 10 00100
00100 18 27777
27777 11 -1
package aaa;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
class lian{
public int id;
public int data;
public int next;
public lian() {
super();
// TODO Auto-generated constructor stub
}
}
public class _1075_链表元素分类 {
static lian lians[] = new lian[100005];
static lian[][] arrlians = new lian[3][100005];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] str1 = bf.readLine().split(" ");
int l1 = Integer.parseInt(str1[0]);
int n = Integer.parseInt(str1[1]);
int k = Integer.parseInt(str1[2]);
int id,data,next;
for (int i = 0; i < n; i++) {
String[] str2 =bf.readLine().split(" ");
id = Integer.parseInt(str2[0]);
data = Integer.parseInt(str2[1]);
next = Integer.parseInt(str2[2]);
lians[id]=new lian();
lians[id].id=id;
lians[id].data=data;
lians[id].next=next;
}
int p =l1;
int n1 = 0;
int n2 = 0;
int n3 = 0;
while(p!=-1) {
if(lians[p].data<0) {
arrlians[0][n1]=lians[p];
n1++;
}else if(lians[p].data>=0&&lians[p].data<=k) {
arrlians[1][n2]=lians[p];
n2++;
}else {
arrlians[2][n3]=lians[p];
n3++;
}
p=lians[p].next;
}
boolean flag = false;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < arrlians[i].length; j++) {
if(arrlians[i][j]!=null) {
if(!flag) {
System.out.printf("%05d %d",arrlians[i][j].id, arrlians[i][j].data);
flag=true;
}else {
System.out.printf(" %05d\n%05d %d",arrlians[i][j].id,arrlians[i][j].id,arrlians[i][j].data);
}
}
}
}
System.out.printf(" -1");
}
}