用递归函数和栈逆序一个栈(C++)

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

输入描述:

输入数据第一行一个整数N为栈中元素的个数。
接下来一行N个整数表示从栈顶依次到栈底的每个元素。

输出描述:

输出一行表示栈中元素逆序后的每个元素

题目注意:
1.用递归函数和栈来实现,不要忘了栈

#include <iostream>
#include <stack>
using namespace std;

void reverse(stack<int>& s)
{
    if(s.empty())
    {
        return;
    }
    int m=s.top();
    s.pop();
    reverse(s);
    s.push(m);//每一次的递归深入,m变量是不一样的
}

int main()
{
    int n;
    while(cin>>n)
    {
        stack<int> s;
        int a=0;
        for(int i=0;i<n;++i)
        {
            cin>>a;
            s.push(a);
        }
        reverse(s);
        for(int i=0;i<n;++i)
        {
            cout<<s.top()<<" ";
            s.pop();
        }
    }
    return 0;
}

原文地址:https://blog.51cto.com/14233078/2471371

时间: 2024-10-27 23:38:36

用递归函数和栈逆序一个栈(C++)的相关文章

【算法题】03-使用递归和栈逆序一个栈

题目 仅用递归操作和栈逆序 一个栈. 一个栈依次压入1.2.3.4.5 那么从栈顶到栈底分别是5,4,3,2,1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能用递归来实现 ,不能用其他数据结构. 思路 需要两个递归函数 递归函数一:将栈stack的栈底元素返回并移除 /** * @Desc 获取栈底元素返回并移除 * @param stack * @return */ public static int getAndRemoveLastElement(St

【栈】仅用递归函数和栈操作逆序一个栈

题目: 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序.但是只能用递归函数来实现,不能用其他数据结构 题解: 需要两个递归函数:1. 将栈底元素返回并删除:2. 逆序一个栈 过程即为获取栈底元素,逆序2.3.4.5,递归后获取栈底元素2,逆序3.4.5,再次递归获取栈底元素3,逆序4.5,再次递归获取栈底元素4,逆序5,最后获取栈底元素5, 逆序空栈.依次返回插入获取的栈底元素,也就是依次插入

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

题目:一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1.将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其它数据结构. 1 //仅用递归函数和栈操作逆序一个栈 2 #include <stdio.h> 3 #include "stack.h" //该头文件包含栈操作的原型声明等相关信息 4 5 SqStack stack; 6 7 //获取栈底元素并删除 8 int getAndRemov

栈和队列----用递归函数和栈的操作实现逆序一个栈

用递归函数和栈的操作实现逆序一个栈 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1,将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能使用递归函数来实现,不能实现其他数据结构. package com.test; import java.util.Stack; /** * Created by Demrystv. */ public class ReverseStack { //将栈stack的栈底元素返回并且删除 private s

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

[题目]? 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他的数据结构. [解答] ?首先分为两步.第一步,得到栈底元素并移除这个栈底元素:第二步,将得到的栈底元素逆序入栈. [代码] 1 package cn.hl.p3; 2 3 import java.util.Stack; 4 5 /** 6 * title:一个栈依次压入1.2.3.4.5, 7 *

编程3:仅用递归函数和栈操作逆序一个栈

<?php header("content-type:text/html;charset=utf-8"); /* * 仅用递归函数和栈操作逆序一个栈 P8 */ function getAndRemoveLastElement(SplStack $stack){ if($stack->isEmpty()){ return false; } $value = $stack->pop(); if($stack->isEmpty()){ return $value;

&quot;Coding Interview Guide&quot; -- 仅用递归函数和栈操作逆序一个栈

[题目] 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能使用其它数据结构 [分析] 栈是一种操作受限的数据结构,只能从某一端进行插入和删除和访问元素.能进行插入删除和访问等操作的一端称为“栈顶”,相对的另一端,不能进行任何栈操作,称为栈底.栈中除了栈顶元素外,其它的栈元素都是不允许访问的.所以想要访问栈中其它元素,则只能将将栈中元素依次弹出直到该元素成为栈顶元素

[Daily]仅用递归函数和栈操作逆序一个栈

[题目] 一个栈依次压入1,2,3,4,5:那么从栈顶到栈底分别为5,4,3,2,1..将栈转置 [要求] 只能用递归函数来实现. [分析] 该算法需要两个递归函数.分别是getAndRemoveLastElement()和Reverse() 函数名 描述 getAndRemoveLastElement 将栈Stack的栈底元素返回并移除.作为中间步骤被Reverse使用 Reverse 算法的入口.主要功能为将栈顶元素优先压入栈中(放在栈底) 关于getAndRemoveLastElement

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

要求: 一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1.将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,而不能用另外的数据结构. import java.util.Stack; public class Problem03_ReverseStackUsingRecursive { /* * 递归得到栈底元素 */ public static int getAndRemoveLastElement(Stack<Inte