这是我的代码:
stack <int> intStack;
while (!adaqueue.empty())
{
intStack.push(adaqueue.front());
adaqueue.pop_front();
}
while (!intStack.empty())
{
adaqueue.push_front(intStack.top());
intStack.pop();
}
它没有给出正确的输出。例如,假设12和45分别是deque中的项目。如果我使用上面的代码来逆转DEQUE,那么它提供了错误的输出。如果我想印头版的话,它给我的是12件,而不是45件。我的代码的潜在错误是什么?注:用c++语言编写的代码。
这里要做的是,在第二个while循环中,您希望从堆栈中移除顶部,然后将其添加到队列的后面。这样你就可以扭转订单了。试着在纸上画出来。它将有助于使它形象化。
队列的初始状态(1为前端):
{1,2,3,4,5}
将其添加到堆栈(顶部为5)之后:
{5,4,3,2,1}
然后,在从堆栈顶部提取并添加到队列后面之后,我们保留相同的顺序(5):
S {5,4,3,2,1}
Q {}
S {4,3,2,1}
Q {5}
S {3,2,1}
Q {5,4}
S {2,1}
Q {5,4,3}
诸若此类。最后,我们逆转了队列:
S {}
Q {5,4,3,2,1}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。