栈的存储结构和应用
来源:互联网 发布:阿里云购买云服务器 编辑:程序博客网 时间:2024/05/21 04:20
//通过栈将二进制转10进进制#include <stdio.h>#include <stdlib.h>#include <math.h>#define STACK_INIT_SIZE 20#define STACKINCREAMENT 10typedef 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 + STACKINCREAMENT)*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("Intput a binary number,end of the '#':"); scanf("%c",&c); while(c != '#'){ Push(&s,c); scanf("%c",&c); } getchar();//filter '\n' len = stackLen(s); printf("The capacity of Stack is %d\n",len); for(i = 0; i < len; i++){ Pop(&s,&c); sum = sum +(c - '0') * pow(2, i); } printf("Binary to Dec. is %d", sum); return 0;}
结果:
阅读全文
0 0
- 栈的存储结构和应用
- 栈的顺序存储结构和链式存储结构
- 栈的顺序存储结构和链式存储结构
- Day17、链式存储结构动态分配内存、栈的顺序存储结构和链式存储结构
- 栈的顺序存储结构和实现
- 栈的链式存储结构和实现
- 线性结构和存储结构的区别
- 栈的存储结构
- 栈的存储结构
- 栈的存储结构
- 栈的存储结构
- 线性结构的两种常见应用之一 栈 (存储数据的结构)
- 比较顺序存储结构和链式存储结构的优缺点
- 顺序存储结构和链式存储结构的选择
- 队列的顺序存储结构和链式存储结构
- 顺序存储结构和链式存储结构的优缺点
- 顺序存储结构和链式存储结构的优缺点
- 顺序存储结构和链式存储结构的优缺点比较
- Spring 使用注解的方式实现IOC和DI(控制反转和依赖注入)
- android studio多项目引用同一Module
- (实验)Java一个线程用synchronized嵌套锁多个对象时调用wait()只释放wait函数关联的所对象还是释放所有锁对象
- Python相关基础
- 计算某年某月某日是该年的第几天【算法入门】
- 栈的存储结构和应用
- layui
- MIPS汇编练习
- MSSQL附加数据库5120错误(拒绝访问)处理方法
- EditPlus实现自动提示和跳转,下载配置CTags,附上下载链接
- Android studio配置copyright插入版权信息的详细教程
- ml-拟合浅谈
- OPENCV 1. opencv和 VS 2010的安装
- JavaScript对象中属性的getter和setter方法