楞次小霖 2022-03-27 10:33 采纳率: 60%
浏览 415
已结题

为什么用dev编写c++代码,编译时会跳出一个文件,无法编译

请大家帮帮忙,谢谢了,用dev编写的时候总是出来这样一个文件 说有错误 怎么办怎么办

img


img

  • 写回答

3条回答 默认 最新

  • 关注

    Push函数和bianli函数有点问题,修改的地方有注释,sqstack.h和main.cpp没改。
    stdlib.h这个头文件用不到,在sqstack.h和sqstack.cpp中删掉即可。
    sqstack.cpp代码:

    //#include <stdlib.h>
    #include "sqstack.h"
    
    void menu()
    {
        sqstack s;
        int n;//选项
        ElemType e;
        while(1)
        {
            cout <<"1.初始化栈 2.入栈 3.删除栈顶元素"<<endl;
            cout <<"4.去栈顶元素 5.遍历 6.栈是否为空"<<endl;
            cout <<"请输入选择项:";
            cin >> n;
            switch(n)
            {
            case 1:
                if(InitStack(s) != ok)
                    cout <<"初始化失败!"<<endl;
                else
                    cout <<"初始化成功!"<<endl;
                break;
            case 2:
                //修改1,这里e没有初始化,需要输入e的值,添加如下两句
                cout <<"请输入需要插入的数据:";
                cin >> e;
    
                if(Push(s,e)==ok)
                {
                    //bianli(s);
                    cout << "入栈成功!"<<endl;
                }else
                    cout <<"操作错误!"<<endl;
                break;
            case 3:
                if(Pop(s)==ok)
                    cout <<"删除成功!"<<endl;
                else
                    cout <<"删除失败!"<<endl;
                break;
            case 4:
                if(GetTop(s,e)==ok)
                    cout <<"取出成功!"<<endl;
                else
                    cout <<"取出失败!"<<endl;
            case 5:
                bianli(s);
                break;
            case 6:
                StackEmpty(s);
                break;
            default:
                cout <<"输入错误!"<<endl;
            }
        }
    }
    
    status InitStack(sqstack &s)
    {
        s.elem = new ElemType[MASXIZE];
        if(!s.elem) exit(OVERFLOW);
        s.top = -1;
        return ok;
    }
    
    status Push(sqstack &s,ElemType e)
    {
        if(s.top == MASXIZE-1 || s.top <-1) //修改 这里需要判断s.top是否小于-1,也就是判断是否进行过初始化
            return error;
        //修改2,输入要放在Push函数的外面
        //cout <<"输入要插入的数:";
        //cin >> e;
        s.top++;
        s.elem[s.top] = e;
        return ok;
    }
    
    status Pop(sqstack &s)
    {
        if(s.top <= -1) //修改,这里改成<=-1
            return error;
        s.top--;
        return ok;
    }
    
    status GetTop(sqstack &s,ElemType &e)
    {
        if(s.top <= -1)//修改,这里改成<=-1
            return error;
        e = s.elem[s.top];
        cout <<"栈顶元素为:"<<e<<endl;
        return ok;
    }
    
    status bianli(sqstack s)
    {
        int i;
        ElemType e;
        if(s.top <= -1) //修改,这里改成<=-1
            return error;
        //修改3
        for(i=0;i<=s.top;i++)
        {
            e = s.elem[i];
            cout << e<<" ";
        }
        cout <<endl;
        return ok;
    }
    
    bool StackEmpty(sqstack s)
    {
        return s.top <= -1; //修改,这里改成<=-1
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 修改了问题 3月27日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 visionmaster启动失败,提示为“机器不满足授权而被禁用”
  • ¥50 用logisim设计16位单时钟周期cpu
  • ¥15 IDEA中圈复杂度如何具体设置
  • ¥50 labview采集不了数据
  • ¥15 请上面代码做什么处理或什么混淆
  • ¥15 英雄联盟自定义房间置顶
  • ¥15 W5500网线插上无反应
  • ¥15 如何用字典的Key,显示在WPF的xaml中
  • ¥15 weautomate读取Excel表格信息然后填写到网页一直报错,如何解决?
  • ¥15 C#如何在Webview2中获取网页验证码