实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。
给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。
测试样例:
[4,3,2,1],4
返回:[1,2,3,4]
class StackReverse {
public:
vector<int> reverseStack(vector<int> A, int n) {
reverse(A);
return A;
}
void reverse(vector<int> &s){ //实现栈的逆序
if(s.empty())
return;
int i=get(s);
reverse(s);
s.push_back(i);
}
int get(vector<int> &s){ //将栈底元素返回并删除
int result=s.back();//得到数组的最后一个数字
s.pop_back(); //去掉数组的最后一个数据
if(s.empty())
return result;
else{
int last=get(s);
s.push_back(result);
return last;
}
}
};