数进制转换(栈),帮我改一下,给分!!

来源:百度知道 编辑:UC知道 时间:2024/06/17 10:26:30
#include "stdio.h"
#include "iostream.h"
#include "malloc.h"
#include "stdlib.h"
#include "math.h"
#include "windows.h"
#define ok 1
#define overflow 0
#define error 0
#define null 0
#define stack_init_size 100
#define stackincrement 30
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
sqstack initstack(sqstack s){
s.base=(int*)malloc(stack_init_size*sizeof(int));
if(!s.base)exit(-2);
s.top=s.base;
s.stacksize=stack_init_size;
return (s);
}
int push (sqstack s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(int));
if(!s.base)exit(overflow);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
*s.top++=e;
return ok;
}
int pop (sqstack s,int e){
if(s.to

void initstack(sqstack &s){
~~~~~~~~~~~~~~~~~~~~~~~~改为s的引用,就没必要返回了
s.base=(int*)malloc(stack_init_size*sizeof(int));
if(!s.base) exit(-2);
s.top=s.base;
s.stacksize=stack_init_size;

}
int push (sqstack &s,int e){
~~~~~~~~~~~~~~~~~~~~~~~~改为s的引用
if(s.top-s.base>=s.stacksize){
s.base=(int*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(int));
if(!s.base)exit(overflow);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
*s.top++=e;
return ok;
}
int pop (sqstack &s,int &e){
~~~~~~~~~~~~~~~~~~~~~~~~改为s的引用
if(s.top==s.base)return error;
e=*--s.top;
return ok;
}

void main()
{
int n,x,e;
sqstack s;
initstack(s);
cout<<"plesae input the number:"<<endl;
cin>>n;
cout<<"plesae input the next number:"<<endl;
cin>