Reverse stack using recursion

Description:

Given a stack, reverse it using recursion.

解题方法:

通过递归,每次将top的元素pop出来,将其加入到栈的最底层。
如果加入到最低层?
通过递归,每层都出栈,直到栈为空。

Time Complexity:

O(n^2)

完整代码:

void reverse(stack<int>& S) {
    if(S.empty())
        return;
    int temp = S.top();
    S.pop();
    reverse(S);
    addToBottom(S, temp);
}

void addToBottom(stack<int>&S, int num) {
    if(S.empty()) 
        S.push(num);
    else {
        int temp = S.top();
        S.pop();
        addToBottom(S, num);
        S.push(temp);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 2,357评论 0 3
  • 不念过去,不畏将来! 看《我的前半生》有感: 陈俊生和贺涵都可以说是事业有成的男人,我在他们身上发现了一些共同点,...
    77红天行者阅读 781评论 1 3
  • 每一个生病的夜晚,一个人难过。 每一个孤独的时刻,一个人渡过。 似乎,我已习惯 习惯,一个人的生活 只是心里,常常...
    纸鸢飘阅读 202评论 0 0