请大家帮帮忙,谢谢了,用dev编写的时候总是出来这样一个文件 说有错误 怎么办怎么办
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
}
大概率是你的库或者库函数出错了。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!