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


    代码:

    #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();
      }
    }
     
    结果:
     
     
     
     
     
  • 相关阅读:
    OpenJudge百炼习题解答(C++)--题4010:2011
    Centos6.5卸载图形化
    nfs远程挂载问题记录
    走马观花-浪里跳-学习英文
    weblogic部署存在中文乱码导致部署失败
    KMS11激活Window系列
    mysql8.x开启远程登录
    notepad++插件实现json、xml格式化
    RHEL SHELL快捷键
    linux-env命令解析
  • 原文地址:https://www.cnblogs.com/shiheyuanfang/p/13378002.html
Copyright © 2020-2023  润新知