Question:
一个栈一次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,只能通过递归函数来实现,不能用其他数据结构。
think:
提醒到适用递归,意味着可以由少及多的解决这个问题。
例:
①:栈中一个元素,先取出元素,记录,判断:栈空,放回,转置完成。
②:栈中两个元素,先取出第一个,记录,判断:栈非空;再取出第二个元素,记录,判断:栈空,重新压入上一个记录元素,压入当前记录元素,转置完成。
③:栈中三个元素,解决办法。。。。。
④:。。。。
由上可看出递归过程
1:先取栈中元素,直到栈空(取出栈底元素)
2:栈空后,将取出元素重新压入栈中(逆序压入)
总和:两个递归函数
Solution:
/**
*
* 取栈底元素,移除,并返回元素值
*
*/
public static int getAndRemoveEndOfStack(Stack<Integer> stack){
// 先取出当前元素
int element = stack.pop();
if(stack.isEmpty()){
// 若栈已为空,当前元素为栈