栈-二进制转换为十进制
来源:互联网 发布:知乎如何回答最新问题 编辑:程序博客网 时间:2024/05/16 19:53
#include <stdio.h>#include <stdlib.h>//malloc和realloc#include <math.h>//平方的计算#define STACK_INIT_SIZE 20//初始化栈的空间#define STACKINCREMENT 10//扩展空间typedef char ElemType;//建立一个栈typedef struct{ ElemType *base;//栈底 ElemType *top;//栈顶 int stackSize;//栈的容量}sqStack;//栈的初始化void InitStack(sqStack *s){ s->base=(ElemType *)malloc(STACK_INIT_SIZE *sizeof(ElemType)); if(!s->base) { exit(0); } s->top=s->base; s->stackSize=STACK_INIT_SIZE;}//入栈void Push(sqStack *s,ElemType e)//栈的名字,入栈的元素{ if(s->top - s->base >= s->stackSize)//判断栈是否满了 { s->base=(ElemType *)realloc(s->base,(s->stackSize+STACKINCREMENT)*sizeof(ElemType)); if(!s->base) { exit(0); } } *(s->top)=e; s->top++;}//出栈void Pop(sqStack *s,ElemType *e){ if(s->top==s->base) { return; } *e=*--(s->top);}//求栈的当前容量int StackLen(sqStack s){ return (s.top-s.base);}int main(){ ElemType c; sqStack s; int len,i,sum=0; InitStack(&s);//初始化 printf("请输入二进制数,输入#符号表示结束!\n"); scanf("%c",&c); if(c>49||c<48) { printf("输入有误!\n"); } while(c != '#') { Push(&s,c); scanf("%c",&c); } getchar();//把'\n'从缓冲区去掉 len=StackLen(s); printf("栈的当前容量是:%d\n",len); for(i=0;i<len;i++) { Pop(&s,&c); sum=sum+(c-48)*pow(2,i); } printf("转化为十进制数是:%d\n",sum); return 0;}
0 0
- 栈-二进制转换为十进制
- 十进制转换为二进制
- 十进制转换为二进制
- 十进制转换为二进制
- 二进制转换为十进制
- 十进制转换为二进制
- 十进制转换为二进制
- 二进制转换为十进制
- 十进制转换为二进制
- 十进制转换为二进制
- 二进制转换为十进制
- 十进制转换为二进制
- 十进制转换为二进制
- 十进制转换为二进制
- 十进制转换为二进制
- 用栈实现十进制转换为二进制
- 十进制转换为二进制(栈)
- BintoDec二进制转换为十进制(栈)
- IOS开发调用系统相机和打开闪光灯
- 概论-组合最优化问题、计算复杂性和启发式算法概念(现代优化计算方法)
- 特征向量的几何意义
- JavaScript Core -- 包装对象
- 整理iOS9适配中出现的坑
- 栈-二进制转换为十进制
- JavaScript Core -- 构造命名空间封装函数
- POJ 2349 Arctic Network(最小生成树之Prim)
- 极大似然估计
- Find Guest IP address using QEMU Guest Agent
- IDL读取hdf文件
- psmisc 程序
- SQL Server 2000 分页查询
- 奇异值和特征值