将栈化为队列
我的想法是
1、判断后一个队列里面是否有存值,若是有,栈顶即队首
2、判断第一个栈是否有存值,若是有,栈顶即队尾
class MyQueue {
private:
stack c_first;
stack d_second;
public:
/** Initialize your data structure here. */
MyQueue()
{
}
/** Push element x to the back of queue. */
void push(int x)
{
c_first.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop()
{
int t;
int ret;
if (!d_second.empty())
{
ret = d_second.top();
d_second.pop();
}
else
{
while (!c_first.empty())
{
t = c_first.top();
c_first.pop();
d_second.push(t);
}
ret = d_second.top();
d_second.pop();
}
return ret;
}
/** Get the front element. */
int peek()
{
int ret;
int t;
if (!d_second.empty())
{
ret = d_second.top();
}
else
{
while (!c_first.empty())
{
t = c_first.top();
c_first.pop();
d_second.push(t);
}
ret = d_second.top();
}
return ret;
}
/** Returns whether the queue is empty. */
bool empty()
{
if (c_first.empty() && d_second.empty()) return true;
else {return false;}
}
};
/**
- Your MyQueue object will be instantiated and called as such:
- MyQueue* obj = new MyQueue();
- obj->push(x);
- int param_2 = obj->pop();
- int param_3 = obj->peek();
- bool param_4 = obj->empty();
*/