新手求教,用栈实现的数制转换,哪儿不对啊
#include<stdio.h>#include<stdlib.h>
#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)printf("overflow");
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
void 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)printf("overflow");//存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;}
*S.top++=e;
}//Push
void Pop( SqStack &S,int &e){
//若栈不空,则删除s的栈顶元素,
//用e返回其值,并返回OK;
//否则返回ERROR
if(S.top = S.base) printf("error");
e = *--S.top;
} // Pop
int StackEmpty(SqStack&S){
if(S.top = S.base)
return 1;
else
return 0;
}
void conversion (int N) {
//对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数
SqStack S;
int e;
InitStack(S); //构造空栈
while(N){
Push(S,N%8);
N = N/8; }
while (!StackEmpty(S)) {
Pop(S, e);
printf("%",e);}
} //Conversion
void main(){
int N;
printf("请输入一个非负十进制整数");
scanf("%d",&N);
conversion(N);
}
用栈实现数制转换,运行结果不对,哪儿错了啊