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

来源:互联网 发布:centos 6.5 snmp配置 编辑:程序博客网 时间:2024/06/05 02:36

题目:一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,而不能用另外的数据结构。


解答:本题考察栈的操作和递归函数的设计,我们需要设计出两个递归函数。

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

 public int getAndRemoveLast(Stack<Integer> stack)  {  int result=stack.pop();  if(stack.empty())  return result;  else  {  int last= getAndRemoveLast(stack);  stack.push(result);  return last;  }  }
递归函数二:逆序一个栈,该方法使用了上面的getAndRemoveLast(Stack<Integer> stack)方法。

  public void reverse(Stack<Integer> stack)  {  if(stack.empty())  return;  int last=getAndRemoveLast(stack);  reverse(stack);  stack.push(last);  }


0 0
原创粉丝点击