微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

堆栈显示溢出输出,但教程显示其他情况

如何解决堆栈显示溢出输出,但教程显示其他情况

我使用教程编写了此代码。他的输出是正确的,但我得到了 stackoverflow 和内存地址作为输出,尽管我的代码与他的完全相同。我已经声明了数组大小 100,但它仍然无法正常工作

Pin to taskbar

解决方法

我已经运行了代码并且清楚地看到在你的“push”方法“if”条件中你又错过了一个“=”,而且我还稍微修改了你的代码来帮助你。希望你会发现它有帮助。

我所做的小更新:

  1. "inserted {integer}" - 在推送方法中添加了味精。
  2. 弹出 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 举报,一经查实,本站将立刻删除。