数据结构出入栈练习,输入一个十进制数,转换为八进制输出
题目:键盘输入一个十进制数,将其转换为八进制数,输出转换后的数。例如:(1348)10 =(2504 )8
1.将元素取余入栈。
2.将元素出栈。
有一个错误,怎么改都不对
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
//输入任意一个非负十进制整数,打印输出与其等值的八进制数
void conversion(int N){
InitStack(S);//构造空栈
SElemType e;
SqStack s;
scanf("%d",N);
while(N){
Push(S,N%8);
N=N/8;
}
while(!StackEmpty(S)){
Pop(S,e);
printf("%d",e);
}
}//conversion
//构造一个空栈S
int InitStack(SqStack S){
S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack
int Push (SqStack S,SElemType e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){
S.base=(SElemType *)realloc(S.base,
(S.stacksize+STACKINCREMENT)* sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
* S.top++=e;
return OK;
}//Push
int Pop(SqStack S,SElemType e){
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR;
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}//Pop
int main(){
int N;
//scanf("%d",&N);
conversion(N);
print(N);
return 0;
}