我们用一个表来总结一下前面的例子执行的步骤:
操作 | m_stack1 | m_stack2 |
append a | {a} | {} |
append b | {a,b} | {} |
append c | {a,b,c} | {} |
delete head | {} | {b,c} |
delete head | {} | {c} |
append d | {d} | {c} |
delete head | {d} | {} |
总结完push和pop对应的过程之后,我们可以开始动手写代码了。参考代码如下:
///////////////////////////////////////////////////////////////////////
// Append a element at the tail of the queue
///////////////////////////////////////////////////////////////////////
template void CQueue::appendTail(const T& element)
{
// push the new element into m_stack1
m_stack1.push(element);
}
///////////////////////////////////////////////////////////////////////
// Delete the head from the queue
///////////////////////////////////////////////////////////////////////
template void CQueue::deleteHead()
{
// if m_stack2is empty,and there are some
//elements inm_stack1, push them in m_stack2
if(m_stack2.size()<= 0)
{
while(m_stack1.size()>0)
{
T&data =m_stack1.top();
m_stack1.pop();
m_stack2.push(data);
}
}
// push theelement into m_stack2
assert(m_stack2.size()>0);
m_stack2.pop();
}
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |