#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct {
int *base;
int *top;
int stacksize;
}Sqstack;
void Initstack(Sqstack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!s.base)
return;
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
int Push(Sqstack &s,int e)
{
if(s.top-s.base>s.stacksize)
{
s.base=(int *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int));
if(!s.base)
return false;
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return true;
}
int Pop(Sqstack &s,int &e)
{
if(s.top==s.base)
return false;
e=*--s.top;
return true;
}
int main()
{
int N,e;
Sqstack s;
Initstack(s);
scanf("%d",&N);
while(N)
{
Push(s,N%8);
N=N/8;
}
while(s.base!=s.top)
{
Pop(s,e);
printf("%d",e);
}
return 0;
}
看调试信息就知道了嘛,你的e都没有初始化。应该按引用传值,是int Pop(Sqstack &s,int &e)而不是int Pop(Sqstack &s,int e)