232.用栈实现队列 and 225用队列实现栈
基础题,没啥好说的。唯一需要注意的是栈弹出在入栈会改变顺序,队列不会。
class MyQueue {
public:
stack<int> m_stIn;
stack<int> m_stOut;
MyQueue() {
}
void push(int x) {
m_stIn.push(x);
}
int pop() {
if( m_stOut.empty() )
{
while( !m_stIn.empty() )
{
m_stOut.push( m_stIn.top() );
m_stIn.pop();
}
}
int temp = m_stOut.top();
m_stOut.pop();
return temp;
}
int peek() {
if( m_stOut.empty() )
{
while( !m_stIn.empty() )
{
m_stOut.push( m_stIn.top() );
m_stIn.pop();
}
}
return m_stOut.top();
}
bool empty() {
return m_stIn.empty() && m_stOut.empty();
}
};
class MyStack {
public:
queue<int> m_queIn;
queue<int> m_queOut;
MyStack() {
}
void push(int x) {
m_queIn.push(x);
}
int pop() {
int size = m_queIn.size();
size--;//只弹出size-1个
while( size-- )
{
m_queOut.push( m_queIn.front() );
m_queIn.pop();
}
int temp = m_queIn.front();
m_queIn.pop();
m_queIn = m_queOut;
while( !m_queOut.empty() )
m_queOut.pop();
return temp;
}
int top() {
int size = m_queIn.size();
size--;//只弹出size-1个
while( size-- )
{
m_queOut.push( m_queIn.front() );
m_queIn.pop();
}
int temp = m_queIn.front();
m_queOut.push(temp);
m_queIn.pop();
m_queIn = m_queOut;
while( !m_queOut.empty() )
m_queOut.pop();
return temp;
}
bool empty() {
return m_queIn.empty() && m_queOut.empty();
}
};

浙公网安备 33010602011771号