【发布时间】:2016-09-27 05:11:52
【问题描述】:
请注意,它只是反向打印而不是反转堆栈
我想做的是借助递归打印堆栈,即从下到上打印。
我自己试过了,但结果不是我所期望的。我的代码看起来像这样。
#include <bits/stdc++.h>
using namespace std;
void print(stack<char>st){
if(st.empty()){return;}
st.pop();
print(st);
cout<<st.top();
}
int main() {
// Assume that I have stack already made....
print(st);
cout<<endl;
}
return 0;
}
有人介意指出我的错误吗?另外,当我通过引用传递堆栈时,结果出乎意料。感谢支持。
【问题讨论】:
-
结果是什么,为什么不是你预期的?
-
运行时错误是它向我展示的内容。在上面的实现中。感谢您的关注:) @fractalwrench
-
我的算法正确打印反向堆栈吗?
-
stack<T>旨在隐藏其实现。例如,您必须根据vector<T>编写自己的堆栈。您收到错误是因为当您pop最后一个元素时,堆栈为空,然后您尝试打印不再存在的st.top()。将cout移到pop之前。 -
你当前的实现从上到下打印,
stack<T>不支持你想要的。您必须编写自己的MyStack类。此外,通过调用pop,您正在删除堆栈的顶部 - 您可能只想打印堆栈而不清空它。
标签: c++ recursion data-structures stack