主题:用栈实现数制转换,帮忙看看,深谢了
#include<iostream>
using namespace std;
typedef int SElemtype;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef struct{
SElemtype *base;
SElemtype *top;
SElemtype stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base=new SElemtype();
if(!S.base) exit(OVERFLOW);
S.base=S.top;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.base==S.top)
return 0;
else return 1;
}
Status Push(SqStack &S,SElemtype e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=new SElemtype;
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top=e;
S.top++;
return OK;
}
Status Pop(SqStack &S,SElemtype e)
{
if(S.base==S.top) return ERROR;
e=*S.top;
S.top--;
return OK;
}
int main()
{
int N;
SElemtype f;
SqStack Sa;
InitStack(Sa);
cout<<"请输入一个十进制数:"<<endl;
cin>>N;
while(N){
Push(Sa,N%8);
N=N/8;
}
while(!StackEmpty(Sa)){
Pop(Sa,f);
cout<<"与该值等值的八进制数:"<<endl;
cout<<f<<endl;
}return 0;
}
有点错误,希望帮忙看看,谢谢
using namespace std;
typedef int SElemtype;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef struct{
SElemtype *base;
SElemtype *top;
SElemtype stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base=new SElemtype();
if(!S.base) exit(OVERFLOW);
S.base=S.top;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.base==S.top)
return 0;
else return 1;
}
Status Push(SqStack &S,SElemtype e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=new SElemtype;
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top=e;
S.top++;
return OK;
}
Status Pop(SqStack &S,SElemtype e)
{
if(S.base==S.top) return ERROR;
e=*S.top;
S.top--;
return OK;
}
int main()
{
int N;
SElemtype f;
SqStack Sa;
InitStack(Sa);
cout<<"请输入一个十进制数:"<<endl;
cin>>N;
while(N){
Push(Sa,N%8);
N=N/8;
}
while(!StackEmpty(Sa)){
Pop(Sa,f);
cout<<"与该值等值的八进制数:"<<endl;
cout<<f<<endl;
}return 0;
}
有点错误,希望帮忙看看,谢谢