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

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

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);
    }
    
}

需要设计两个递归函数

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

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

相关推荐

09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务