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

Posted 一步一个脚印

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用递归函数和栈操作逆序一个栈相关的知识,希望对你有一定的参考价值。

代码:

#include <iostream>
#include <stack>
using namespace std;
int g_a_r_l_e(stack<int>&stackdata)//取栈顶元素并在栈中将其删除;
                                                         //注意这里转引用,如果不传引用每次递归会传入不同的stack,这样会出现错误                                                       
{
  int top_val = stackdata.top();
  stackdata.pop();
  if(stackdata.empty()){
    return top_val;
  }
  else{
    int last = g_a_r_l_e(stackdata);
    stackdata.push(top_val);
    return last;
  }
}
void reverse(stack<int>&stackdata)//每次递归都是取执行完g_a_r_l_e()的返回值,
                                //直到stackdata.empty=1,这时把g_a_r_l_e()的返回值入栈
{
  if(stackdata.empty()){
    return ;
  }
  else{
    int i = g_a_r_l_e(stackdata);
    reverse(stackdata);
    stackdata.push(i);
  }
}

int main()
{
  stack<int>stackdata1;
  int a[]={1,2,3,4,5,6};
  for(int i=0;i<6;i++)
  {
    stackdata1.push(a[i]);
  }
  reverse(stackdata1);
  cout<<"逆序后栈数据:"<<endl;
  //遍历逆序后的栈
  while(!stackdata1.empty()){
    int tp = stackdata1.top();
    std::cout << tp << \'\\n\';
    stackdata1.pop();
  }
}
 
结果:
 

 

 

 

 

 
 
 
 

以上是关于用递归函数和栈操作逆序一个栈的主要内容,如果未能解决你的问题,请参考以下文章

用递归函数和栈操作逆序栈

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

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

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

编程3:仅用递归函数和栈操作逆序一个栈

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