10.1 栈和队列
10.1-6 两个栈实现一个队列
class queue
{
public:
void push(int);
void pop();
int front();
int back();
private:
stack<int> a,b;
};
void queue::push(int x)
{
a.push(x);
}
void queue::pop()
{
int n=a.size();
for(int i=1;i<n;++i)
{
b.push(a.top());
a.pop();
}
a.pop();
for(int i=1;i<n;++i)
{
a.push(b.top());
b.pop();
}
}
int queue::front()
{
int n=a.size();
for(int i=1;i<n;++i)
{
b.push(a.top());
a.pop();
}
int res=a.top();
for(int i=1;i<n;++i)
{
a.push(b.top());
b.pop();
}
return res;
}
int queue::back()
{
return a.top();
}
10.1-7 两个队列实现一个栈
class stack
{
public:
void push(int);
void pop();
int top();
private:
queue<int> a,b;
};
void stack::push(int x)
{
a.push(x);
}
void stack::pop()
{
int n=a.size();
for(int i=1;i<n;++i)
{
b.push(a.front());
a.pop();
}
a.pop();
for(int i=1;i<n;++i)
{
a.push(b.front());
b.pop();
}
}
int stack::top()
{
return a.back();
}