栈s1只进,栈s2只出。
入队时统一加入到s1,此时出栈顺序刚好跟出队顺序是反的。
出队时将s1的所有元素以此加入s2,此时s2的出栈顺序即为出队顺序,在s2里Pop即可。
需要注意的是,只需要在s2为空时再搬运s1即可
class CQueue {
stack<int> s1, s2;
public:
CQueue() {
}
void appendTail(int value) {
s1.push(value);
}
int deleteHead() {
// 只有s2为空的时候 才把s1的全都搬过来
if (s2.empty())
while (!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
if (s2.empty())
return -1;
else
{
int t = s2.top();
s2.pop();
return t;
}
}
};