栈与队列的互相实现
栈
class MyStack
{
public:
queue<int> qu;
MyStack() { }
void push(int x)
{
qu.push(x);
}
int pop()
{
int size = qu.size();
size--;
while(size--)
{
qu.push(qu.front());
qu.pop();
}
int res = qu.front();
qu.pop();
return res;
}
int top()
{
return qu.back();
}
bool empty()
{
return qu.empty();
}
};
队列
class MyQueue
{
public:
stack<int> skIn;
stack<int> skOut;
MyQueue() { }
void push(int x)
{
skIn.push(x);
}
int pop()
{
if (skOut.empty())
{
while(!skIn.empty())
{
skOut.push(skIn.top());
skIn.pop();
}
}
int res = skOut.top();
skOut.pop();
return res;
}
int peek()
{
int res = this->pop();
skOut.push(res);
return res;
}
bool empty()
{
return skIn.empty() && skOut.empty();
}
};