如何仅用递归函数和栈操作逆序一个栈(JAVA)

问题描述:

        一个栈依次压入1、2、3、4、5,即从栈顶到栈底分别为5、4、3、2、1。将这个栈转置之后,从栈顶到栈底为1、2、3、4、5,也就是完成栈的逆序。只能用递归函数来实现,不能使用其他的数据结构。

解答:

递归函数一:将栈stack的栈底元素返回并移除。代码如下:

public static int getAndRemoveLastElement(Stack<Integer> stack) {
	  int result = stack.pop();
	  if(stack.isEmpty()) {
		   return result;
	  }else {
		  int last = getAndRemoveLastElement(stack);
		  stack.push(result);
		  return last;
	  }
  }

递归函数二:逆序一个栈,就是题目要求实现的方法,具体过程如下代码中的reserve方法。该方法调用递归函数一。

public static void reverse(Stack<Integer> stack) {
	  if(stack.isEmpty()) {
		  return;
	  }
	  int i = getAndRemoveLastElement(stack);
	  reverse(stack);
	  stack.push(i);
  }




猜你喜欢

转载自blog.csdn.net/xxxxxwwwwww/article/details/80047900
今日推荐