您的位置:首页 > 其它

两个栈实现队列的功能

2015-04-06 22:40 225 查看
//用两个栈实现队列的功能
//假设有两个栈s1与s2,则s1保存刚刚入队的元素,若需出队且s2为空,则将s1所有元素压入s2(此时s2中元素顺序为元素入队顺序),然后取出s2栈顶即可,若s2非空(此时s2中元素为s1之前压入,其栈顶就是最早入队的元素),则直接取出s2的栈顶。
template<class T> class MyQueue
{
stack<T> s1,s2;
public:
MyQueue(){}
int size()
{
return s1.size()+s2.size();
}
bool empty()
{
if(size()==0)return true;
else return false;
}
void push(T value)
{
s1.push(value);
}
T front()
{
if(!s2.empty())
{
return s2.top();
}
else
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
return s2.top();
}
}
void pop()
{
if(!s2.empty())
{
s2.pop();
}
else
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
s2.pop();
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: