public static void reverse(Stack<Integer> stack) {if (stack.isEmpty()) {return;}// 递归栈能保存信息这个机制用到了很好,就是问系统栈怎么逆序int i = f(stack);reverse(stack);stack.push(i);}// 栈底元素移除掉// 上面的元素盖下来// 返回移除掉的栈底元素// 例如 栈底 3 2 1 栈头 ,f(r=1,last=3) f(r=2,last=3) f(r=3,null),最后把res返回上面,上面再返回last,自己的压回去// 获得栈低元素public static int f(Stack<Integer> stack) {int result = stack.pop();if (stack.isEmpty()) {return result;} else {int last = f(stack);// 递归调用 f(1) f(2) f(3)的时候栈空返回 last,last=3; 1 2 重新压回去stack.push(result);return last;}}
