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

Posted vector6_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用递归函数和栈逆序一个栈相关的知识,希望对你有一定的参考价值。

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

描述

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

输入描述:

输入数据第一行一个整数N为栈中元素的个数。

接下来一行N个整数表示从栈顶依次到栈底的每个元素。

输出描述:

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

#include<iostream>
#include<stack>
using namespace std;
//getLast()递归找到栈底的元素,reverseStack()根据getLast递归,由栈顶元素开始入栈
int getLast(stack<int>& st)
{
    int temp = st.top();
    st.pop();
    if(st.empty())
    {
        return temp;
    }
    else
    {
        int last = getLast(st);
        st.push(temp);
        return last;
    }
}

void reverseStack(stack<int>& st)
{
    if(st.empty())
        return;
    int last = getLast(st);
    reverseStack(st);
    st.push(last);
}

void print(stack<int> st)
{
    if(st.empty())
        return;
    int num = st.top();
    st.pop();
    print(st);
    cout<<num<<" ";
}

int main()
{
    int n;
    cin>>n;
    stack<int> st;
    int num;
    while(n>0)
    {
        cin>>num;
        st.push(num);
        --n;
    }
    reverseStack(st);
    
    print(st);
    return 0;
}

以上是关于用递归函数和栈逆序一个栈的主要内容,如果未能解决你的问题,请参考以下文章

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

用递归函数和栈操作逆序栈

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

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

用递归函数和栈操作逆序栈

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