如何解决堆栈显示溢出输出,但教程显示其他情况
我使用教程编写了此代码。他的输出是正确的,但我得到了 stackoverflow 和内存地址作为输出,尽管我的代码与他的完全相同。我已经声明了数组大小 100,但它仍然无法正常工作
Pin to taskbar
解决方法
我已经运行了代码并且清楚地看到在你的“push”方法“if”条件中你又错过了一个“=”,而且我还稍微修改了你的代码来帮助你。希望你会发现它有帮助。
我所做的小更新:
- "inserted {integer}" - 在推送方法中添加了味精。
- 弹出 1 时显示顶部元素。
#include<iostream>
using namespace std;
#define n 100
class stack{
int* arr;
int top;
public:
stack(){
arr=new int[n];
top=-1;
};
void push(int x){
if(top==n-1){
cout<<"Stack overflow"<<endl;
return;
}
top++;
arr[top]=x;
cout<<"inserted "<<arr[top]<<endl;
};
void pop(){
if(top==-1){
cout<<"No element to pop"<<endl;
return;
}
top--;
};
int Top(){
if(top==-1){
cout<<"Stack is empty"<<endl;
return -1;
}
return arr[top];
};
bool empty(){
return top==-1;
}
};
int main(){
stack st;
st.push(1);
st.push(2);
st.push(3);
cout<<st.Top()<<endl; // 3
st.pop(); // pops 3
cout<<st.Top()<<endl; // 2
st.pop(); // pops 2
cout<<st.Top()<<endl; // 1
st.pop(); // pops 1
st.pop(); // stack underflow
cout<<st.empty()<<endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。