【中等】如何仅用递归函数和栈操作逆序一个栈-Java
分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程大家好欢迎来到我的网站 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑人工智能时代就要来临了科… 继续阅读 前言https://www.captainai.net/troubleshooterpackage live.every.day.ProgrammingDesign.CodingInterviewGuide.StackAndQueue; import java.util.ArrayList; import java.util.Arrays; import java.util.Stack; /** * 如何仅用递归函数和栈操作逆序一个栈 * * 【题目】 * 一个栈依次压入1、2、3、4、5那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后从栈顶到栈底为1、2、3、4、5也就 * 是实现栈中元素的逆序但是只能用递归函数来实现不能用其他数据结构。 * * 【难度】 * 中等 * * 【解答】 * 本题考查栈的操作和递归函数的设计我们需要设计出两个递归函数。 * * 递归函数一将栈stack的栈底元素返回并移除。 * 具体过程就是如下代码中的getAndRemoveLastElement方法。 * * 递归函数二逆序一个栈就是题目要求实现的方法具体过程就是如下代码中的reverse方法。该方法使用了上面提到的 * getAndRemoveLastElement方法。 * * author Created by LiveEveryDay */ public class ReverseStackByRecursion { public static int getAndRemoveLastElement(StackInteger stack) { int result stack.pop(); if (stack.isEmpty()) { return result; } else { int last getAndRemoveLastElement(stack); stack.push(result); return last; } } public static void reverse(StackInteger stack) { if (stack.isEmpty()) { return; } int i getAndRemoveLastElement(stack); reverse(stack); stack.push(i); } public static void main(String[] args) { StackInteger stack new Stack(); stack.push(1); stack.push(2); stack.push(3); reverse(stack); System.out.printf(The reversed stack is: %s, Arrays.toString(new ArrayList(stack).toArray())); } } // ------ Output ------ /* The reversed stack is: [3, 2, 1] */
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2561659.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!