C语言用栈实现十进制转换为二进制的方法示例
2017-06-05 14:06
961 查看
本文实例讲述了C语言用栈实现十进制转换为二进制的方法。分享给大家供大家参考,具体如下:
#include<stdio.h> #include<malloc.h> #include<math.h> #include<string.h> #include "process.h" #define SIZE 100 #define STACKINCREMENT 10 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef struct { int a; } SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; } SqStack; SqStack S; //定义全局变量 Status InitStack(SqStack *S) { S->base=(SElemType *)malloc(SIZE*sizeof(SElemType)); if(!S->base) exit(OVERFLOW); S->top=S->base; S->stacksize=SIZE; return OK; } Status Push(SqStack *S,SElemType e) { if(S->top-S->base>=S->stacksize) { S->base=(SElemType *)malloc((S->stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S->base) exit(OVERFLOW); S->top=S->base+S->stacksize; S->stacksize+=STACKINCREMENT; } *S->top++=e; //printf("%dwww\n",*--S->top); return OK; } Status Stackempty(SqStack *S) { if(S->top==S->base) return TRUE; else return FALSE; } Status Pop(SqStack *S,SElemType *e) { if(S->top==S->base) return ERROR; *e=*--S->top; return OK; } Status DtoBTrans(int N,SqStack *S) { SElemType e; while(N) { e.a=N%2; Push(S,e); N=N/2; } while(!Stackempty(S)) { Pop(S,&e); printf("%d",e); } return OK; } void main() { int x; InitStack(&S); printf("请输入十进制数:"); scanf("%d",&x); DtoBTrans(x,&S); }
运行结果:
希望本文所述对大家C语言程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 十进制转换为二进制 (三种方法实现)
- C#实现把图片转换成二进制以及把二进制转换成图片的方法示例
- C语言实现十进制转换成二进制
- (C语言)实现对任意浮点型数据从十进制到二进制的转换
- 如何用C语言实现十进制到二进制的转换并计算二进制中1的个数
- C语言实现十进制转换为二进制
- C语言实现二进制与十进制转换
- Matlab实现二进制矩阵转换为十进制
- 一条SQL语句实现二进制到十进制的转换
- 栈和其在二进制转换为十进制的应用(c语言)
- Python实现的十进制小数与二进制小数相互转换功能
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- 将十进制整形数转换成二进制,然后通过字符型输出 自己实现的一个简单的例子
- C语言实现BMP转换JPG的方法
- java实现十进制小数转换二进制
- 十进制转换2-16进制(c语言算法实现)
- 二进制转换为C语言数组-Python实现
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- 十进制小数转换成二进制小数的快速方法
- 方法:十进制小数转换二进制