首页 > 其他分享 >03_如何仅用递归函数和栈操作逆序一个栈

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

时间:2023-09-27 22:26:00浏览次数:24  
标签:03 递归函数 int 栈底 result stack 逆序

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

【题目】 一个栈依次压入 1、2、3、4、5,那么从栈顶到栈底分别为 5、4、3、2、1。将这个栈转置 后,从栈顶到栈底为 1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实 现,不能用其他数据结构。

【解答】

本题考察栈的操作和递归函数的设计,我们需要设计出两个递归函数。

递归函数一:将栈stack的栈底元素返回并移除。

具体过程

public static int getAndRemoveLastElement(Stack<Integer> stack) {
	int result = stack.pop();
	if (stack.isEmpty()) {
		return result;
	} else {
		int last = getAndRemoveLastElement(stack);
        stack.push(result);
        return last;
	}
}

如果从stack的栈顶到栈底依次为3、2、1,这个函数的具体过程如下图所示。

image-20230927220706941

image-20230927220733944

image-20230927220748434

标签:03,递归函数,int,栈底,result,stack,逆序
From: https://www.cnblogs.com/codingbao/p/17734479.html

相关文章

  • CF1020 Codeforces Round 503 (by SIS, Div. 2)
    CF1020ANewBuildingforSIS分类讨论\(a,b\)两个端点的几种情况就好了,特判\(t_a=t_b\)的情况。#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>usingnamespacestd;intn,h,a,b,k;voidsolve(){ intta,fa,tb,fb; scanf(&qu......
  • CF1036 Educational Codeforces Round 50 (Rated for Div. 2)
    CF1036AFunctionHeight答案为\(\lceil\frac{k}{n}\rceil\)。#include<iostream>#include<cstdio>usingnamespacestd;longlongn,k;intmain(){ scanf("%lld%lld",&n,&k); printf("%lld",(k+n-1)/n); return0;}......
  • 202309272035-《maven依赖已下载,但还是报红,解决办法》
    1. 勾选设置,maven,选中“始终更新快照”。  2.点击“更新” ......
  • AtCoder Regular Contest 103
    C-////如果奇数和偶数出现的颜色的最大值相同一边取最大值和一边取次大值,否则两边都选最大值即可。#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=100005;intn,m;intv[N];intc[N];intmain(){ scanf("%d",&n); for(in......
  • Webpack报错Error: error:0308010C:digital envelope routines::unsupported处理
    在学习组件库流程打包的时候报错找不到module,后来改了版本又报错Error:error:0308010C:digitalenveloperoutines::unsupported报错原因:node17+版本对发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.解决方案:在网上搜索......
  • ARC063F Snuke's Coloring 2
    Day\(4!\)。首先容易找到周长为\(2(w+1)\)和\(2(h+1)\)的矩形,所以答案下界是\(2(\max(w,h)+1)\)。考虑按照整个矩形中心坐标,将矩形分成\(4\)个子矩形,观察到若有矩形完全包含于其中一个子矩形,则其周长必不超过\(2\max(w,h)\),必然不是最优解。所以最优解一定被直线\(2x=......
  • CH32V203的USBFS在主机和设备下的低功耗唤醒注意事项
    1.如果使用WFE睡眠,醒来后无需重新打开外设时钟;2.如果使用STOP模式睡眠,醒来后需要重新打开外设时钟。 USBFS_RCC_Init();3.STANDBY需要进入之前设置成IO(PB6.PB7)为外部事件,醒来之后设备复位(待机模式唤醒后复位),重新枚举USB。具体配置如下:voidSleep_WakeUp_Deal(){EXTI_Init......
  • springcloud微服务03-heima2023
    在微服务远程调用的过程中,还存在几个问题需要解决。首先是业务健壮性问题:例如在之前的查询购物车列表业务中,购物车服务需要查询最新的商品信息,与购物车数据做对比,提醒用户。大家设想一下,如果商品服务查询时发生故障,查询购物车列表在调用商品服务时,是不是也会异常?从而导致购物车......
  • Java多线程--Lesson03
    线程同步概念:线程同步指的是在多个线程操作同一资源时,需要通过线程排队和线程锁来约束这些线程,使得其可以对其资源完成同步并发指的是同一时间段内,有多个线程去操作同一个资源文件由于同一进程的多个线程共享一块空间资源,带来方便的同时也带来了冲突问题,为了保证数据在方法中......
  • 彻底搞懂HTTPS03
    原理版点我直达01点我直达02点我直达03代码版点我直达01......