解法一:
用数组假装链表
use std::io;
fn main() {
let mut s = String::new();
io::stdin().read_line(&mut s).expect("Failed To Read Line !");
let mut v = vec![];
let mut k = 0usize;
let mut root = 0u32;
let mut size = 0usize;
for i in s.trim().split(" ") {
match k {
0 => size = i.parse::<usize>().unwrap(),
1 => root = i.parse::<u32>().unwrap(),
_ => v.push(i.parse::<u32>().unwrap()),
}
k += 1;
}
let mut list = Vec::with_capacity(size);
list.push(root);
let mut i = 0;
while i < v.len() - 1 {
for j in 0..list.len() {
if v[i + 1] == list[j] {
list.insert(j + 1, v[i]);
break;
}
}
i += 2;
}
root = v[i];
list.retain(|&x| x != root);
if list.len() > 0 {
for i in list.iter() {
print!("{} ", *i);
}
}
}
解法二:
构造链表来解
wait my code