题目描述
一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
int getAndRemoveLastElement(stack<int> &s){
int result = s.top();
s.pop();
if(s.empty()){
return result;
}else{
int last = getAndRemoveLastElement(s);
s.push(result);
return last;
}
}
void myReverse(stack<int> &s){
if(s.empty()){
return ;
}
int last = getAndRemoveLastElement(s);
myReverse(s);
s.push(last);
}
void myPrint(stack<int> s, int n){
if(s.empty())
return;
vector<int> arr(n, 0);
for(int i=0;i<n;i++){
int num = s.top();
s.pop();
arr[n-1-i]=num;
}
for(auto num: arr){
cout<<num<<" ";
}
cout<<endl;
}
int main(){
int n;
cin>>n;
stack<int> s;
int num;
for(int i=0;i<n;i++){
cin>>num;
s.push(num);
}
myReverse(s);
myPrint(s, n);
system("pause");
return 0;
}