已经改好了,只要把函数中C++中的引用改成C语言中的指针就可以了!初学者能看懂这段代码不错了,还有数据结构中的栈呢,(代码的逻辑结构没有改动)你试试
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINICREMENT 10
#define ERROR -1
#define OVERFLOW -2
#define OK 1
typedef int status;
typedef struct {
int *base;
int *top;
int stacksize;
}Sqstack;
status Initstack(Sqstack *S){
(*S).base=(int *)malloc(STACK_INIT_SIZE *sizeof(int));
if(!(*S).base)exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;}
status Push(Sqstack *S,int e){
if((*S).top-(*S).base>=(*S).stacksize){
(*S).base=(int *)realloc((*S).base,((*S).stacksize+STACKINICREMENT)*sizeof (int));
if(!(*S).base)exit (OVERFLOW);
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINICREMENT;}
*(*S).top++=e;
return OK;
}
status Pop(Sqstack *S,int &e){
if ((*S).top==(*S).base)return 0;
e=*(--(*S).top);
return OK;}
status Stackempty(Sqstack S){
if(S.top == S.base)
return true;
else
return false;}
int main(){
Sqstack S;
int n;
int e;
int m;
Initstack(&S);
printf("请输入你所要转换的十进制数:");
scanf("%d",&n);
printf("你所选择的进制(1到10之间):");
scanf("%d",&m);
printf("%d,%d",n,m);
while(n!=0){
e=n%m;
Push(&S,e);
n=n/m;
}
printf("你所得到的该进制数:");
while (!Stackempty(S)){
Pop (&S,e);
printf("%d",e);
}
printf("\n");//这句加上结果会看清楚点
return 0;
}
你现在这代码就是C语言