题目描述:
给定一个单链表 L,请编写程序输出 L 中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。
例如:给定 L 为 1→7→5,则输出应该为 7;给定 L 为 1→2→3→4,则输出应该为 3。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String addrHead = str.split(" ")[0];
int n = Integer.parseInt(str.split(" ")[1]);
// 0:当前地址 1:val值 2下一个地址
List<String[]> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(in.nextLine().split(" "));
}
// 存储链表
List<String> head = new ArrayList<>();
// 求解链表长度
int len = 0;
while (!addrHead.equals("-1")){
for (String[] strings : list) {
if (addrHead.equals(strings[0])){
len++;
head.add(strings[1]);
addrHead = strings[2];
}
}
}
System.out.println(head.get((len)/2));
}