输入数据第一行一个整数N为栈中元素的个数。
接下来一行N个整数表示一个栈依次压入的每个元素。
输出一行表示栈中元素逆序后的栈顶到栈底的每个元素
5 1 2 3 4 5
1 2 3 4 5
use std::io::{prelude::*, BufReader};
pub fn get_and_remove_stack_bottom_element(stk: &mut Vec<i32>) -> i32 {
let ans = stk.pop().unwrap();
if stk.is_empty() {
return ans;
} else {
let last = get_and_remove_stack_bottom_element(stk);
stk.push(ans);
return last;
}
}
pub fn reverse_stack(stk: &mut Vec<i32>){
if stk.is_empty() {
return;
}
let i = get_and_remove_stack_bottom_element(stk);
reverse_stack(stk);
stk.push(i);
}
pub fn main() {
let stdin = std::io::stdin();
let handle = stdin.lock();
let mut reader = BufReader::new(handle);
let mut s = String::new();
reader.read_line(&mut s).expect("err");
let n = s.trim().parse::<i32>().expect("err");
s.clear();
reader.read_line(&mut s).expect("err");
let mut stk: Vec<i32> = s.trim().split(' ').map(|x| x.parse().unwrap()).collect();
reverse_stack(&mut stk);
while stk.len() > 0 {
print!("{} ", stk.pop().unwrap());
}
}