c语言利用栈将10进制数转换为8进制数,出现问题

2020-09-11 教育 89阅读
#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)

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com