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


    题目:

     解题思路:

    记住递归内部就是一个栈,写两个递归就能实现队列,即将12345,入栈之后出栈还是12345。

    这里是第一个递归实现获取栈底元素,然后再使用第二个递归,实现反转。

     1 /* 递归函数1: 将栈stack的栈底元素返回并移除 */
     2 static int getAndRemoveLastElement(stack<int> data)
     3 {
     4     int result = data.pop();
     5     if (data.empty() )
     6     {
     7          return result;    
     8     }      
     9     else 
    10     {
    11          int last = getAndRemoveLastElement(data);
    12          data.push(result);
    13          return last;    
    14     }
    15 }    
    16 
    17 public:
    18      /* 递归函数2: 逆序一个栈,就是题目要求实现的方法 */
    19      void reverse( stack<int>  data)
    20     {
    21          if (data.empty() )
    22          {
    23               return;      
    24          }
    25          int i = getAndRemoveLastElement(data);
    26          reverse(data);
    27          data.push(i);
    28     }      

     

     getAndRemoveLastElement方法在图中简单表示为get方法,表示移除并返回当前栈底元素。

  • 相关阅读:
    Linux w命令
    01.drf文档及外键字段反序列化
    redis的参数解释
    redis集群复制和故障转移
    codis原理及部署_01
    redis 主从哨兵02
    redis 主从哨兵01
    redis持久化
    redis python操作
    redis cluster
  • 原文地址:https://www.cnblogs.com/Tavi/p/12505452.html
Copyright © 2020-2023  润新知