主题:堆栈要将一个十进制转换成八进制的算法,不知道错在哪?大家帮帮忙
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define stackinitsize 100
#define stackincrement 10
typedef struct{
int *base,*top;
int stacksize;
}stack;
int initstack(stack &s){
s.base=(int*)malloc(stackinitsize*sizeof(int));
if(!s.base) return NULL;
s.top=s.base; //
return NULL;
}
int pushstack(stack &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 NULL;
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
*s.top++=e;
return NULL;
}
int popstack(stack &s,int &e){
if(s.top==s.base) return NULL;
e=*--s.top;
return NULL;
}
void main()
{
int N,e;
stack s;
initstack(s);
printf("\n输入一个十进制转换八进制:");
scanf("%d",&N);
while(N){
pushstack(s,N%8);
N=N/8;
}
printf("go on!\n");
while(s.base!=s.top){
popstack(s,e);
printf("%d",e);
}
}
输入一个数,就再也没有反应,不知道怎么回事..用中断试了之后那*s.top老给不了值..奇怪..大家帮帮忙,在此感谢大家了
#include<stdlib.h>
#define NULL 0
#define stackinitsize 100
#define stackincrement 10
typedef struct{
int *base,*top;
int stacksize;
}stack;
int initstack(stack &s){
s.base=(int*)malloc(stackinitsize*sizeof(int));
if(!s.base) return NULL;
s.top=s.base; //
return NULL;
}
int pushstack(stack &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 NULL;
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
*s.top++=e;
return NULL;
}
int popstack(stack &s,int &e){
if(s.top==s.base) return NULL;
e=*--s.top;
return NULL;
}
void main()
{
int N,e;
stack s;
initstack(s);
printf("\n输入一个十进制转换八进制:");
scanf("%d",&N);
while(N){
pushstack(s,N%8);
N=N/8;
}
printf("go on!\n");
while(s.base!=s.top){
popstack(s,e);
printf("%d",e);
}
}
输入一个数,就再也没有反应,不知道怎么回事..用中断试了之后那*s.top老给不了值..奇怪..大家帮帮忙,在此感谢大家了