#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++);
究竟是什么问题