用栈实现把十进制转化为八进制
- 格式:doc
- 大小:28.00 KB
- 文档页数:2
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
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) exit(-1);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return 1;
}
int Pop(sqstack &s,int &e)
{
if(s.top==s.base)
return 0;
e=*--s.top;
return 1;
}
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(-1);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return 1;
}
int StackEmpty(sqstack s)
{
if(s.top==s.base)
return 0;
else
return 1;
}
void Conversion()
{
int n,e;
sqstack s;
InitStack(s);
printf("请输入一个十进制数:");
scanf("%d",&n);
while(n)
{
Push(s,n%8);
n=n/8;
}
while(!StackEmpty(s))
{
Pop(s,e);
printf("%d",e);
}
}
void main()
{
printf("此程序为把十进制数用栈转化为八进制\n");
Conversion();
}