typedef int SElemType;
typedef int Status;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define OVERFLOW -1
#define ERROR 0
#include<malloc.h>
#include<stdio.h>
Status InitStack(SqStack &s)
{
s.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base) return(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack &s,SElemType e)
{
SElemType*l_temp;
if((s.top-s.base)>=s.stacksize)
{
l_temp=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!l_temp) return(OVERFLOW);
s.base=l_temp;
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*(s.top++)=e;
return OK;
}
Status Pop(SqStack &s,SElemType &e)
{
if(s.top==s.base) return ERROR;
e=*(--s.top);
return OK;
}
int StackEmpty(SqStack s)
{
if(s.base=s.top) return 1;
else return 0;
}
void conversion(void)
{
SqStack s;
int N,b;
SElemType e;
InitStack(s);
scanf("%d%d",&N,&b);
while(b>1&&N>0)
{
Push(s,N%b);
N=N/b;
}
while(!StackEmpty(s))
{
Pop(s,e);
printf("%d",e);
}
}
void main()
{
conversion();
}
不知道为什么总是得不到正确的结果!