您的位置:首页 > 编程语言 > C语言/C++

C++中用两栈实现一个队列

2018-03-08 10:42 197 查看
第二种方法较好!

class MyQueue
{
public:
// 出队
void pop()
{
// 第一种:
// 1、先把 s1 留一个元素, 其他导入到 s2 中
// 2、s1 出栈
// 3、将 s2 元素再导入到 s1 中

// 第二种
// 1、先判断 s2 是否为空
// 2、不为空,s2直接出栈
// 3、如果空,将 s1 留一个元素, 其他导入到 s2 中
// 4、s1出栈
if(s2.empty())
{
while (s1.size() > 1)
{
s2.push(s1.top());
s1.pop();
}

if (!s1.empty())
s1.pop();
}
else
{
s2.pop();
}
}

// 入队
void push(int num)
{
// 入 s1
s1.push(num);
}
private:
stack<int> s1;
stack<int> s2;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: