还添加了一个用栈实现进制转换的实例
在这里插入代码片
```#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define erro 0
#define ok 1
typedef struct {
int * base;
int * top;
int stacksize;//最大容量
}SqStack;
int InitStack(SqStack &S){
S.base=(int *) malloc (STACK_INIT_SIZE* sizeof(int));
if(!S.base){
puts("存储空间分配失败!");
exit(erro);
}
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return ok;
}
int Push(SqStack &S,int a){
if(S.top-S.base>=S.stacksize){//判断栈是否满
S.base=(int *) realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!S.base) exit(erro);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top=a;
S.top++;
return ok;
}
int Pop(SqStack &S,int &a){
if(S.base==S.top) return erro;
a=*--S.top;
return ok;
}
void printpop(SqStack &S){
int a;
while(S.top!=S.base){
Pop(S,a);
printf("%d ",a);
}
}
void conversion(int number,int d){//进制转换
int a;
SqStack stack;
InitStack(stack);
while(number){
a=number%d;
Push(stack,a);
number=number/d;
}
printpop(stack);
}
int main(){
conversion(8,2);
/*
int a=0;
SqStack stack;
InitStack(stack);
scanf("%d",&a);
while(a!=-1000){
Push(stack,a);
scanf("%d",&a);
}
while(stack.top!=stack.base){
Pop(stack,a);
printf("%d ",a);
}
*/
return 0;
}