用栈实现把十进制转化为八进制

  • 格式:doc
  • 大小:28.00 KB
  • 文档页数:2

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#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();

}