请注意,它只是反向打印而不是反转堆栈
我想要做的是借助递归打印堆栈,即从下到上打印。
我已经尝试过了,但结果并不是我所期望的。我的代码看起来像这样。
#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;
}
有人会介意指出我的错误吗?此外,当我通过引用传递堆栈时,结果是意外的。感谢您的支持。
答案 0 :(得分:3)
为什么不将st.top()
存储在变量中并稍后打印。
void print(stack<char>st)
{
if(st.empty())
{
return;
}
char top = st.top();
st.pop();
print(st);
cout<<top<<endl;
}
让我解释一下: -
假设,你的堆栈 - &gt; 0,1
此处,呼叫层次结构
print({0, 1})
{
// stack after pop -- {0}
print({0})
}
print({0})
{
// stack after pop -- {}
print ({})
// here you want to print top of empty stack
// which gives the exception
}
答案 1 :(得分:0)
pop是函数get元素打印像反向
void printStack()
{
if(!isEmpty())
{
int temp = pop();
printStack();
printf(" %d ", temp);
push( temp);
}
}
int pop()
{
if (isEmpty())
printf("Stack is Empty...\n");
else {
st.top = st.top - 1;
return st.array[st.top+1];
}
}