本文主要是介绍仅用递归函数和栈逆序一个栈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
package stackAndQueue;import java.util.Stack;import org.junit.Test;/*** 仅用递归函数和栈逆序一个栈:ReverseStack【2】* * 【一个栈依次压入1、2、3,将栈转置,使栈顶到栈底依次是1、2、3,只能用递归函数,不能借用额外的数据结构包括栈】* * 算法思想:两个递归函数(getAndRemoveBottom、reverse)* * @author xiaofan*/
public class ReverseStack {/*** 返回并移除当前栈底元素(栈内元素<栈底>1、2、3<栈顶>变为2、3<栈顶>).*/private int getAndRemoveBottom(Stack<Integer> stack) {int result = stack.pop();if (stack.empty()) {return result;} else {int bottom = getAndRemoveBottom(stack);stack.push(result);return bottom; // 第一轮时,返回栈底元素1}}/*** 每层递归取出栈底的元素并缓存到变量中,直到栈空;* * 然后逆向将每层变量压入栈,最后实现原栈数据的逆序。* * @param stack*/public void reverse(Stack<Integer> stack)
这篇关于仅用递归函数和栈逆序一个栈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!