题目地址
解题思路
首先明确栈和队列的区别:
栈: 先进后出
队列:先进先出
所以要用两个栈来(stin,stout)
实现队列,将stin
作为存数据的栈,然后将stin.top()
的元素值依次压入stout
中。
而在stout
中可以用来实现删除队列头部值的功能:即stout.pop()
。
代码实现(C++)
class CQueue {
public:
stack<int> stin;
stack<int> stout;
CQueue()
{
while(!stin.empty())
{
stin.pop();
}
while(!stout.empty())
{
stout.pop();
}
}
void appendTail(int value)
{
stin.push(value);
}
int deleteHead()
{
//如果stout为空
if(stout.empty())
{
while(!stin.empty())
{
stout.push(stin.top());
stin.pop();
}
}
//如果还是空
if(stout.empty())
{
return -1;
}
else
{
int dele=stout.top();
stout.pop();
return dele;
}
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/