利用栈实现进制转换
来源:互联网 发布:p2p网络摄像机软件 编辑:程序博客网 时间:2024/05/16 14:35
用栈来实现进制间的转换实际上只是利用了栈的“先进后出”的原则,实际上完全可以不用栈来实现进制间的转换,可以将数组逆置来代替栈的作用,而且代码较少。
//////////////////////////////////////////////////// 利用栈来实现进制转换/////////////////////////////////////////////////////////////////#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define MAXSIZE 100 typedef struct SeqStack{int data[MAXSIZE] ;int top ; int base ;} SeqStack ;void InitStack( SeqStack * S ){S->top = 0 ;S->base = 0 ;}void Push( SeqStack * S , int elem ){if( S->top - S->base + 1 >= MAXSIZE ){printf("栈已满无法进行插入操作!\n") ;exit(0) ;}S->data[S->top++] = elem ;}void Pop( SeqStack * S , int * elem ){if( S->base == S->top ){printf("栈为空,无法进行出栈操作!") ;exit(0) ;}*elem = S->data[--S->top] ;}// 将十进制转换为二进制void decimalToBinary( int number , char * binary ){SeqStack S ;int elem ;int remainder ; // 余数int quotient = number ; // 商// 初始化栈InitStack( &S ) ;while( 1 ){remainder = quotient % 2 ;quotient = quotient / 2 ;Push( &S , remainder ) ;if( quotient == 0 ){break ;}}int i = 0 ;while( S.base != S.top ){Pop( &S , &elem ) ;binary[i++] = char(elem + 48) ;}binary[i] = '\0' ;}// 将十进制转换为N进制(2=<N<=16)void decimalTonRadix( int number , int N , char * nRadix ){SeqStack S ;int quotient = number ; // 商int remainder ; // 余数InitStack( &S ) ; // 初始化栈while( 1 ){remainder = quotient % N ;quotient /= N ;Push( &S , remainder ) ;if( quotient == 0 ){break ;}}int i = 0 ;int elem ;while( S.base != S.top ){Pop( &S , &elem ) ;if( elem >= 10 ){nRadix[i++] = char(elem - 10 + 65) ;}else{nRadix[i++] = char(elem + 48 ) ;}}nRadix[i] = '\0' ;}int main(){int number ; // 待转换的数int N ; // 要转换的进制char binary[50] ;char nRadix[50] ;printf("输入要转换的数:") ;scanf("%d", &number ) ;printf("输入要转换的进制N(2<=N<=16):") ;scanf("%d" , &N ) ;//decimalToBinary( number , binary ) ;//printf("%s\n" , binary) ;decimalTonRadix( number , N , nRadix ) ;printf("%s\n" , nRadix ) ; printf("\n") ;return 0 ;}
- 利用栈实现进制的转换!
- 利用栈实现进制的转换
- 利用栈实现进制转换
- 利用栈实现进制转换!!!
- 【数据结构】 利用栈实现进制转换
- 利用栈来实现进制的自动转换
- 利用栈实现的的进制转换
- 利用栈实现10进制转换为8进制
- 利用移位运算实现进制转换
- 利用尾递归实现进制转换
- 利用栈实现进制转换1,常用进制转换成十进制
- 黑马程序员——利用函数实现进制转换
- 利用递归方法实现任意进制转换的方法
- 利用python实现任意进制的相互转换
- 利用栈进行进制转换
- 利用栈进行进制转换,二进制转换为十进制
- 利用栈实现整型多进制转换
- C语言:利用栈实现进制间转换
- 求开平方
- MySQL 安装过程,图解
- JDK URLConnection 详解
- UIControl iOS控件
- Linux shell编程 12 ---- 管道+I/O重定向
- 利用栈实现进制转换
- 求二叉树的深度和宽度
- JAVA内存管理
- 网络编程--closesocket(s)与shutdown(s,type)的区别
- java和js中正则表达式的用法和区别
- 永久设置vim tab宽度
- iOS 7 What’s New in AV Foundation之二维码扫描(上)
- struts2框架实现登录案例
- FD_SET