数据结构c 进制转换问题(栈)
2017-10-07 17:22
197 查看
用栈来实现进制进制转换 应使用辗转相除法 注意栈的操作 #include <stdio.h> #include <stdlib.h> #define S_SIZE 100 #define STACKINCREMENT 10 typedef struct SqStack{ int *base; int top; int stacksize; }SqStack; //初始化空栈 void InitStack(SqStack &S) { S.base=(int *)malloc(S_SIZE*sizeof(int)); S.stacksize=S_SIZE; S.top=-1; } //判断空栈 int StackEmpty(SqStack &S) { if(S.top==-1) return 1; else return 0; } //判断栈满 int StackFull(SqStack &S) { if(S.top==S.stacksize) return 1; else return 0; } //进栈 void push(SqStack &S,int x) { if(StackFull(S)) printf("栈满\n"); S.base[++S.top]=x; } //出栈 int pop(SqStack &S) { int x; if(StackEmpty(S)) printf("栈空\n"); x=S.base[S.top]; S.top--; return x; } //进制转化函数 void convert(SqStack &S,int N,int n) { int i,x; do { push(S,N%n); N/=n; } while (N!=0); while(!StackEmpty(S)) { x=pop(S); if(x>9) { if(x==10) x='A'; if(x==11) x='B'; if(x==12) x='C'; if(x==13) x='D'; if(x==14) x='E'; if(x==15) x='F'; //16 进制的转换 printf("%c",x); } else printf("%d",x); } printf("\n"); } int main() { int n,N;//要转换成的进制数和要转换的数 SqStack s; scanf("%d%d",&n,&N) ; InitStack(s); printf("%d转换为%d进制后为:\n",n,N); convert(s,n,N); return 0; } 这样就可以啦..........
相关文章推荐
- hdoj 2051 Bitset(数的进制转换问题)
- LeetCode Excel Sheet Column Number(进制转换问题)
- HDU 4432 因子之和以及进制转换问题
- java中的进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换中pow()函数的问题
- java中的进制转换问题
- 神奇的位运算——进制转换问题(16转8)
- ——黑马程序员——C语言基础--进制转换问题
- 进制转换问题
- 进制转换问题
- PHP 进制转换 dechex 无法正确计大数字问题
- 代码练习系列:问题 C 进制转换【转载】
- 进制转换问题(段地址×16+偏移地址)
- 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
- js的大数运算 跟经典的收藏 结合前一篇的收藏 解决工作中的一个大数进制转换问题
- 进制转换问题
- 利用递归解决进制转换问题