要求将栈中元素反转,只能使用本身的pop操作和递归函数
class StackReverse {
int getStackBottomElement(stack<int> &s){//返回栈底元素并移除栈底元素
int x = s.top();
s.pop();
if(s.empty())
return x;
else{
int y = getStackBottomElement(s);
s.push(x);
return y;
}
}
void reverseStack(stack<int> &s){
if(s.empty())
return;
else{
int x = getStackBottomElement(s);
reverseStack(s);
s.push(x);
}
}
public:
vector<int> reverseStack(vector<int> A, int n) {//A中元素为栈中元素序列.A[0]为栈顶,A[n-1]为栈底.
stack<int>s;
for (int i=n-1; i>=0; --i) {
s.push(A[i]);
}
reverseStack(s);
vector<int>ans;
while (!s.empty()) {
ans.push_back(s.top());
s.pop();
}
return ans;
}
};