给你一个栈,请逆序这个栈;
不能申请额外的数据结构,只能使用递归求解;
题解:
这道题难点就在于无法申请额外数据结构,可以用两个递归函数实现;
第一个递归函数GetBottom()主要用途是将栈底的数据出栈,并返回该数据的值;
所以我们可以使用递归让栈内的数据依次出栈,直到最后一个数据出栈后栈为空返回该数据的值,递归开始往回走,让之前出栈的值再依次进栈。
第二个递归函数Reverse()就是将栈逆序了;
这就需要我们开始调用GetBottom()函数将栈底数据先出栈,然后依次出栈,直到栈为空,此时最后一个出栈的一定是栈顶数据,这时递归就要往回走,我们只需要将出栈的数据依次再压入栈中即可,此时先入栈的是最后一个出栈的栈顶,最后一个入栈的就是之前的栈底,这样就完成了逆序;
ps:这个递归代码是很难想到的,也是非常非常非常巧妙的,不知道我什么时候可以写出这样的代码的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)