【左神算法】栈逆序
程序员文章站
2022-06-03 15:58:22
...
1.问题
一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、
3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。
2.code
package com.ncst.offer.ch1.offer.ch2;
/**
* @author i
* @create 2020/7/20 18:16
* @Description
*/
public class StackReverse {
public void reverse(Stack<Integer> stack){
//如果栈为null 退出
if (stack.isEmpty()){
return;
}
//将栈底元素拿到
int i = removeLastElement(stack);
reverse(stack);
//存储当前层的i值
stack.push(i);
}
public int removeLastElement(Stack<Integer> stack){
int res = stack.pop();
if (stack.isEmpty()){
return res;
}else {
//返回的是递归函数的栈底的值
int last = removeLastElement(stack);
//存储当前层的res值
stack.push(res);
return last;
}
}
public static void main(String[] args) {
StackReverse stackReverse = new StackReverse();
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stackReverse.reverse2(stack);
while (!stack.isEmpty()){
System.out.println(stack.pop());
}
}
}
上一篇: 秦始皇还在世的时候,为什么没人敢*?
下一篇: 音视频系列技术之如何入门DEMO