class CQueue {
public:
//s2用来放入值,再把s2的值取出来放入s1就是队列顺序(负负得正)
stack<int>s1;
stack<int>s2;
CQueue() {
}
//s2直接插入,deleteHead时再把s2放入s1
void appendTail(int value) {
s2.push(value);
}
int deleteHead() {
//两个栈都空,说明没有元素
if(s1.empty() && s2.empty())
return -1;
//如果s1空而s2不空,将s2的值放入s1,s1不空就用不到s2的值
else if(s1.empty() && !s2.empty())
while(!s2.empty()){
s1.push(s2.top());
s2.pop();
}
//从s1中取出头部元素
int tmp = s1.top();
s1.pop();
return tmp;
}
};
剑指offer Leetcode 9.用两个栈实现队列
猜你喜欢
转载自blog.csdn.net/qq_36459662/article/details/113924972
今日推荐
周排行