C++ 堆栈显示溢出输出,但教程显示了其他输出
我使用教程编写了这段代码。他的输出是正确的,但我得到了堆栈溢出和内存地址作为输出,尽管mycode与他的完全相同。我已经声明数组大小为100,但它仍然不工作C++ 堆栈显示溢出输出,但教程显示了其他输出,c++,data-structures,stack,C++,Data Structures,Stack,我使用教程编写了这段代码。他的输出是正确的,但我得到了堆栈溢出和内存地址作为输出,尽管mycode与他的完全相同。我已经声明数组大小为100,但它仍然不工作 #include<iostream> using namespace std; #define n 100 class stack{ int* arr; int top; public: stack(){ arr=new int[n]; top=-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;
};
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;
st.pop();
cout<<st.Top()<<endl;
st.pop();
st.pop();
st.pop();
cout<<st.empty()<<endl;
return 0;
}
#包括
使用名称空间std;
#定义n 100
类堆栈{
int*arr;
int top;
公众:
堆栈(){
arr=新整数[n];
top=-1;
};
无效推送(整数x){
如果(顶部=n-1){
cout我已经运行了代码,并且清楚地看到,在您的“推”方法中,如果“条件”中您又错过了一个“=”,我还对您的代码进行了一些修改,以帮助您解决问题。希望对您有所帮助
我做了一些小更新:
“inserted{integer}”-在push方法中添加了msg
弹出1时显示顶部元素
#包括
使用名称空间std;
#定义n 100
类堆栈{
int*arr;
int top;
公众:
堆栈(){
arr=新整数[n];
top=-1;
};
无效推送(整数x){
如果(顶部==n-1){
coutt这看起来像是一个完美的调试器练习。或者是一个调整编译器的练习,我不会编译这段代码:无意冒犯,但几乎每次有人说“完全一样”,这都不是;)如果(top=n-1)
中的赋值发现很好-如果你指出你还修改了什么(以及为什么),这也很好我也是。现在你可以检查了@TedLyngmo@Usama如果解决了这个问题,请考虑回答。我已经给了你我的赞成票,但我确实觉得现在有点好了。谢谢你@ TedLyngmo。
#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;
}