永发信息网

数据结构C++内存超限怎么解决

答案:2  悬赏:70  手机版
解决时间 2021-04-10 12:41
  • 提问者网友:欲望失宠
  • 2021-04-09 14:21
题目:
输入第一行为测试数据组数。每组测试数据第1行输入两个整数n(1<=n<=100)、c(1<=c<=20000)分别代表停车的次数和校车容量,接下来有n行,每一行第一个数m表示有人上车还是下车(0 <= m <= 200):(1)当m=0时,后面紧跟着输入一个非负整数k,表示此时有k个人下车;(2)当m>0时,后面输入m个正整数,表示等待上车的人的编号,可能有人因车满而无法上车。

输入输出样例:
Sample Input
1
4 10
6 1 2 3 4 5 6
0 3
2 7 8
0 3

Sample Output
Case #1:
6 5 4
8 7 3

代码:
#include
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
} SqStack;

void InitStack(SqStack &S,int m)
{
S.base=(int*)malloc(m*sizeof(int));
S.top=S.base;
S.stacksize=m;
}
void pop(SqStack &S,int &e)
{
if(S.top!=S.base)
e=*--S.top;
}
void push(SqStack &S,int e)
{
if(S.top-S.base!=S.stacksize)
*(S.top)++=e;
}
int main()
{
int zu;
cin>>zu;
SqStack S;
for(int i=1; i<=zu; i++)
{

int n,c;
cout<<"Case #"< cin>>n>>c;
InitStack(S,c);

while(n--)
{

int s,e,num;
cin>>s;
if(s==0)
{
cin>>num;
for(int i=0; i {
pop(S,e);
cout< }
pop(S,e);
cout< }
else
{
while(s--)
{
cin>>num;
push(S,num);
}

}
}
}
}
提交到OJ上,结果内存超限50%,内存超限是什么意思,哪里出了问题啊?
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-04-09 15:48
有多组测试数据,每组都 InitStack(S,c); 分配了多次内存,每次分配没有把上次分配的内存释放。
全部回答
  • 1楼网友:零点过十分
  • 2021-04-09 17:25

你的参数传递的是指针,给的参数又是常量,常量怎么能改呢,当然会内存出错了。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯