链接:https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/description/?favorite=xb9nqhhg
题目:

思路:


class CQueue {
public:
stack<int>a,b;
CQueue() {
}
void appendTail(int value) {
a.push(value);
}
int deleteHead() {
if(a.size()==0)
{
return -1;
}
while(a.size()!=0)
{
int c=a.top();
b.push(c);
a.pop();
}
int tmp=b.top();
b.pop();
while(b.size()!=0)
{
int c=b.top();
a.push(c);
b.pop();
}
return tmp;
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/
该问题要求使用两个栈CQueue来实现一个队列的基本操作,包括添加元素到尾部(appendTail)和删除头部元素(deleteHead)。在实现过程中,利用栈的后进先出(LIFO)特性,将添加元素操作直接压入栈a,而删除元素时将栈a中的元素转移至栈b,直到找到头部元素并弹出,再将剩余元素从栈b回填到栈a。

被折叠的 条评论
为什么被折叠?



