
方法一:新增直接增加,删除使用双栈
新增数据:栈 s1 存放新增的栈。
删除数据:将 s1 中的所有数 “倒进” s2 中,然后使用出栈操作就完成了删除的操作。最后再将 s2 中的数据 “倒回” s1 中。
class CQueue {public:CQueue() {}void appendTail(int value) {s1.push(value);}int deleteHead() {while(!s1.empty()){s2.push(s1.top());s1.pop();}if(s2.empty()){return -1;}int temp = s2.top();s2.pop();while(!s2.empty()){s1.push(s2.top());s2.pop();}return temp;};private:stack<int> s1;stack<int> s2;};
方法二:双栈 第一个栈支持插入操作,第二个栈支持删除操作
栈 s1 支持新增操作。
栈 s2 支持删除操作,
- 如果 s2 不为空,s2 最顶层元素出栈
- 如果 s2 为空,
- 如果 s1 不为空, 将 s1 中元素 “倒入” s2 中,s2 最顶层元素出栈
- 如果 s1 中元素为空,则 return -1
