永发信息网

关于栈中赋值的区别

答案:1  悬赏:0  手机版
解决时间 2021-05-02 05:53
  • 提问者网友:凉末
  • 2021-05-01 18:24

#include"stdio.h"
#include"string.h"
#include"stdlib.h"

#define stack_init_size 100
#define increment 10

typedef struct{
char *base;
char *top;
int stacksize;//以元素为单位;
}Stack;


int init(Stack &s)
{
s.base=(char *)malloc(stack_init_size*sizeof(char));
if(!s.base)
exit(-2);
s.top=s.base;
s.stacksize=stack_init_size;
return 1;
}


int GetTop(Stack s,int &e)
{
if(s.top==s.base)
return 0;
e=*(s.top-1);
return 1;
}


int Pop(Stack &s,int &e)
{
if(s.top==s.base)
return 0;
e=*--s.top;
return 1;
}


int Push(Stack &s,int e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char *)realloc(s.base,(stack_init_size+increment)*sizeof(char));
if(!s.base)
exit(-2);
s.top=s.base+s.stacksize;
s.stacksize+=increment;
}
*s.top++=e;
return 1;
}
void main()
{
int i,e;
Stack stack;
init(stack);
for(i=1000;i<1004;i++)//若改为for(i=100;i<104;i++),两者的区别
Push(stack,i);
for(i=1;i<4;i++)
{
Pop(stack,e);
printf("%d ",e);
}
}

for(i=1000;i<1004;i++)//若改为for(i=100;i<104;i++),两者的区别

此时for(i=1000;i<1004;i++)

for(i=100;i<104;i++);

究竟是什么问题

最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-05-01 18:51

s.base=(char *)realloc(s.base,(stack_init_size+increment)*sizeof(char));


内容分配问题

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