栈的应用举例之进制转换
来源:互联网 发布:都有什么数据库 编辑:程序博客网 时间:2024/06/05 00:51
十进制数N和其他d进制数的转换时计算机实现甲酸的基本问题,其解决方法很多,其中一个简单算法基于下列原理:
N=(N div d)×d+N mod d (其中,div为整除运算,mod为求余运算)
例如:(1348)10=(2504)8,其运算过程如下:
代码实现:
#include<stdio.h>#include<malloc.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -2#define STACK_INT_SIZE 100#define STACKINCREMENT 10
typedef struct{ int *base; int *top; int stacksize;}SqStack;//InitStack
int InitStack(SqStack &S){ S.base=(int *)malloc(STACK_INT_SIZE*sizeof(int)); if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INT_SIZE; return OK;}//Push
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(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK;}
//StackEmpty
int StackEmpty(SqStack S) { if(S.top==S.base) return TRUE; else return FALSE; }
//StackEmpty
int StackEmpty(SqStack S) { if(S.top==S.base) return TRUE; else return FALSE; }
//Pop
int Pop(SqStack &S,int &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK;}
//conversion
void conversion(){ SqStack S; InitStack(S); int N; printf("请输入一个十进制数N:"); scanf("%d",&N); int d; printf("请输入进制位d:"); scanf("%d",&d); while(N){ Push(S,N%d); N=N/d; } printf("十进制数N转换为d进制数:"); while(!StackEmpty(S)){ int e; Pop(S,e); printf("%d",e); }}
//main
int main(){ conversion();}
0 0
- 栈的应用举例之进制转换
- 栈的应用举例:二进制的转换
- 栈的应用举例----数制转换
- PHP数据结构之六 PHP栈的应用举例【数制转换和括号匹配算法】
- 栈的应用举例:数制转换,表达式求值
- 栈的应用举例——数制转换
- 数据结构 P48 算法实现 栈的应用举例-数制转换
- 栈的应用之进制转换
- 栈的应用之进制转换
- 栈的应用之进制转换
- 栈的应用举例
- 栈的应用举例
- 栈的应用举例
- 栈的应用举例
- 栈的应用举例
- 3.2栈的应用举例
- 栈的应用举例1
- 栈的应用举例--递归
- 大牛总结:关注技术
- 基础篇(四) Service生命周期和进程内通信
- jQuery checkbox attr checked不起作用
- 设计模式之生产者-消费者模式
- HTML5+CSS3技术制作的数据云,下载即可使用,真正方便于程序员的demo
- 栈的应用举例之进制转换
- 关于APP接口设计
- QThread之调度
- sql语言添加和修改字段
- 利用OpenSSL生成RSA公钥私钥
- String对象数量分析
- 事实是复杂的
- 今天碰到iPhone5无限重启,只好...
- ELKStack插件Json编码