利用栈的基本操作实现将任意一个十进制整数转化为R进制整数

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。算法为:1、定义栈的顺序存取结构2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)3、定义一个函数用来实现上面问题:(1)十进制整数X和R作为形参(2)初始化栈(3)只要X不为0重复做下列动作将X%R入栈,X=X/R(4)只要栈不为空重复做下列动作栈顶出栈,输出栈顶元素#includestdio.h#includestdlib.h#includemalloc.h#definestack_init_size100#definestackincrement10typedefstructsqstack{int*base;int*top;intstacksize;}sqstack;intStackInit(sqstack*s){s-base=(int*)malloc(stack_init_size*sizeof(int));if(!s-base)return0;s-top=s-base;s-stacksize=stack_init_size;return1;}intPush(sqstack*s,inte){if(s-top-s-base=s-stacksize){s-base=(int*)realloc(s-base,(s-stacksize+stackincrement)*sizeof(int));if(!s-base)return0;s-top=s-base+s-stacksize;s-stacksize+=stackincrement;}*(s-top++)=e;returne;}intPop(sqstack*s,inte){if(s-top==s-base)return0;e=*--s-top;returne;}intstackempty(sqstack*s){if(s-top==s-base){return1;}else{return0;}}intconversion(sqstack*s){intn,e=0,flag=0;printf(输入要转化的十进制数:\n);scanf(%d,&n);printf(要转化为多少进制:2进制、8进制、16进制填数字!\n);scanf(%d,&flag);printf(将十进制数%d转化为%d进制是:\n,n,flag);while(n){Push(s,n%flag);n=n/flag;}while(!stackempty(s)){e=Pop(s,e);switch(e){case10:printf(A);break;case11:printf(B);break;case12:printf(C);break;case13:printf(D);break;case14:printf(E);break;case15:printf(F);break;default:printf(%d,e);}}printf(\n);return0;}intmain(){sqstacks;StackInit(&s);conversion(&s);return0;}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功