在VC6.0中,利用栈实现数制转换,代码有问题,请帮帮忙,谢谢!
#include<stdio.h>#include<stdlib.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S)//构造空栈S
{
S.base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!S.base)
exit(0);
S.base=S.top;
S.stacksize=STACK_INIT_SIZE;
return 1;
}//InitStack
int Push(SqStack &S, int e)//插入元素e为新的栈顶元素
{
if(S.top-S.base>=S.stacksize)
{
S.base = (int *)realloc(S.base,
(S.stacksize + STACKINCREMENT) * sizeof(int));
if(!S.base)
exit(0);//存储分配失败
S.top = S.base+S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return 1;
}//Push
int Pop(SqStack &S, int &e)//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
{
if(S.top == S.base) return 0;
e = *--S.top;
return 1;
}//Pop
int StackEmpty(SqStack S)//若栈S为空,则返回TURE;否则返回FALSE
{
if( S.base == S.top)
return 1;
else
return 0;
}
void conversion(int n,int m)
{
int e;
SqStack S;
InitStack(S);
while(n){
Push(S, n % m);
n = n/m;
}
while(!StackEmpty(S)){
Pop(S,e);
printf( "%d",e);
}
}
void main()
{
int a,b;
printf("请输入一个十进制非负整数:");
scanf("%d",&a);
printf("请输入要转换的进制数:");
scanf("%d",&b);
printf("转换为%d进制整数为:",b);
conversion(a,b);
}