zoukankan      html  css  js  c++  java
  • 用递归函数和栈操作逆序一个栈

    代码:

    #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 << ' ';
        stackdata1.pop();
      }
    }
     
    结果:
     
     
     
     
     
  • 相关阅读:
    halcon7月license
    软设考试成绩查询结果
    Halcon自学笔记
    Window_Store
    Windows_Store之2048
    基于C#开发的2048
    MVC+EF+EasyUI实现CRUD
    ASP.NET MVC Model验证总结
    浙江省三级数据库考试
    基于C#的短信发送
  • 原文地址:https://www.cnblogs.com/shiheyuanfang/p/13378002.html
Copyright © 2011-2022 走看看