实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。
给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。
class StackReverse {
public:
vector<int> reverseStack(vector<int> A, int n) {
// write code here
stack<int> s;
vector<int> result;
for(int i=0;i<n;i++)
{
s.push(A[i]);
}
reverse(s);
while(!s.empty())
{
result.push_back(s.top());
s.pop();
}
return result;
}
void reverse(stack<int> s)
{
if(s.empty())
return;
else
{
int i=s.top();
s.pop();
reverse(s);
s.push(i);
}
}
int getBase(stack<int> s)
{
int result=s.top();
s.pop();
if(s.empty())
return result;
else
{
int temp=getBase(s);
s.push(result);
return temp;
}
}
};