《利用栈的基本操作实现将任意一个十进制整数转化为R进制整数》由会员分享,可在线阅读,更多相关《利用栈的基本操作实现将任意一个十进制整数转化为R进制整数(3页珍藏版)》请在金锄头文库上搜索。
1、利用栈的基本操作实现将任意一个十进制整数转化为R进制整数利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。算法为:1、定义栈的顺序存取结构2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)3、定义一个函数用来实现上面问题:(1)十进制整数X和R作为形参(2)初始化栈(3)只要X不为0重复做下列动作将X % R入栈, X=X/R(4)只要栈不为空重复做下列动作栈顶出栈 , 输出栈顶元素#include #include #include #define stack_init_size 100#define stackincrement 10 typedef struct sqs
2、tack int *base; int *top; int stacksize; sqstack; int StackInit(sqstack *s) s-base=(int *)malloc(stack_init_size *sizeof(int); if(!s-base) return 0; s-top=s-base; s-stacksize=stack_init_size; return 1; int Push(sqstack *s,int e) if(s-top-s-base=s-stacksize) s-base=(int *)realloc(s-base,(s-stacksize+
3、stackincrement)*sizeof(int); if(!s-base) return 0; s-top=s-base+s-stacksize; s-stacksize+=stackincrement; *(s-top+)=e; return e; int Pop(sqstack *s,int e) if(s-top=s-base) return 0; e=*-s-top; return e; int stackempty(sqstack *s) if(s-top=s-base) return 1; else return 0; int conversion(sqstack *s) i
4、nt n,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) case 10: printf(A); break; case 11: printf(B); break; case 12: printf(C); break; case 13: printf(D); break; case 14: printf(E); break; case 15: printf(F); break; default: printf(%d,e); printf(n); return 0; int main() sqstack s; StackInit(&s); conversion(&s); return 0;