题解 | #用递归函数和栈逆序一个栈#

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

https://www.nowcoder.com/practice/1de82c89cc0e43e9aa6ee8243f4dbefd

import java.util.*;
public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        Stack<Integer> s = new Stack<Integer>();
        int n = sc.nextInt();
        for(int i = 0; i < n; i++) {
            int t = sc.nextInt();
            s.push(t);
        }
        reverseStack(s);
        for(int i = 0; i < n- 1; i++) {
            int t = s.pop();
            System.out.print(t + " ");
        }
        System.out.print(s.pop());
    }
    // 得到并且删除栈底元素的递归函数
    public static int getAndDeleteLastElement(Stack<Integer> s) {
        int re = s.pop();
        if(s.isEmpty()) {
            return re;
        } else {
            int last = getAndDeleteLastElement(s);
            s.push(re);
            return last;
        }
    }
    
    public static void reverseStack(Stack<Integer> s) {
        if(s.isEmpty()) return;
        int temp = getAndDeleteLastElement(s);
        reverseStack(s);
        s.push(temp);
    }
    
}

需要设计两个递归函数

一个递归函数实现返回并去除栈底元素

另一个递归函数实现逆转栈:每次调用上一个函数获取栈底元素并在本函数返回将其压入栈中
利用两个递归函数+栈操作实现栈的逆序,一个递归函数负责取栈底元素,另一个递归函数负责重新压入
#算法题#
全部评论

相关推荐

07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务