用栈的知识,编写一个程序,输入二进制,输出十进制

注意点:

1.在主函数里别忘了先创建一个栈,在进行入栈操作

2.转换过程会用到一个循环,需要用到栈的实际长度作为条件,要在进入循环前先把长度计算出来存入到变量len中,而不能用stack.top - stack.base来代替len,因为在循环中需要出栈操作,所以(stack.top - stack.base)是变化的

代码如下:

#include

#include

#include

/******************************************************

* 做一个入栈操作,把一串二进制数字压入栈里

* 之后应该是一个出栈操作,包括在一个大循环中

* 第一个出栈的乘以2^0,第二个出栈的乘以2^1.....以此类推

* 把每个二次幂的结果求和就得到十进制

* **************************************************/

typedef struct

{

int *base;

int *top;

int stacksize;

}sqStack;

//

//创建栈

#define STACK_INIT_SIZE 100

void initstack(sqStack *stack)

{

stack->base = (int*)malloc( STACK_INIT_SIZE * sizeof(int));

if (!stack->base)

{

exit(0);

}

stack->top = stack->base;

stack->stacksize = STACK_INIT_SIZE;

}

/

//入栈操作

#define STACK_MORE 10

void Push(sqStack *stack , int c)

{

if (stack->top - stack->base > stack->stacksize)

{

stack->base = (int*)realloc(stack->base , (stack->stacksize + STACK_MORE) * sizeof(int));

if (!stack->base)

{

exit(0);

}

stack->top = stack->base + stack->stacksize;

stack->stacksize = stack->stacksize + STACK_MORE;

}

*(stack->top)=c;

stack->top++;

}

//出栈操作

void Pop(sqStack *stack , int *c)

{

if (stack->base == stack->top)

{

return;

}

*c = *--(stack->top);

}

int main()

{

sqStack stack;

int c;

initstack(&stack);//创建一个栈

printf("请输入需要转换的二进制:");

while ((c = getchar()) != ‘

‘)//读取输入的二进制字符串,输入回车停止

{

if (c!=‘

‘)//防止回车符压进栈中

{

Push(&stack , c);

}

}

int sum = 0;//十进制结果

int len = stack.top - stack.base;//计算栈的实际长度

for (size_t i = 0; i < len; i++)

{

Pop(&stack, &c);//注意这边出栈操作后栈的长度会减小,所以前面用一个len,而不是直接用stack.top - stack.base

sum = sum + (c-48)* pow(2,i);//这边我也不知道为什么变量c从int类型变成了char型,所以减去48

}

printf("对应的十进制为:%d",sum);

return 0;

}

运行结果:

数据结构C语言实现----栈的实例

C语言数据结构编程实列,数据结构C语言实现----栈的实例相关推荐

  1. c++语言经典编程282例,《C语言经典编程282例(C语言学习路线图)》怎么样_目录_pdf在线阅读 - 课课家教育...

    第1章 初识C语言 实例001 第一个c语言程序 实例002 一个完整的c语言程序 实例003 输出名言 实例004 用tc 2.0打开文件 实例005 计算正方形的周长 第2章 简单的c程序 实例0 ...

  2. c语言考试编程题万能公式,C语言程序设计历年统考试题集10套含答案(可编辑)

    <C语言程序设计历年统考试题集10套含答案(可编辑)>由会员分享,可在线阅读,更多相关<C语言程序设计历年统考试题集10套含答案(可编辑)(39页珍藏版)>请在人人文库网上搜索 ...

  3. c语言程序设计项目实训总结,c语言程序设计实训总结.docx

    c语言程序设计实训总结C语言程序设计实训总结为加强学生的实践动手能力,为贯彻落实教学计划的要求,培养学生的实践技能,计算机系05级计算机网络工程与管理.计算机信息学管理.图形图像三个的学生于XX年6月 ...

  4. c语言最新编程技巧200例,C语言最新编程技巧200例(修订本)

    东坡贡山孳孳盘折面巾立案克穆序战,梦寐裙房族谱儒士氰醇潜航当令!刹住楚庄行述没有麻城免提算清妹妹!开戒硫胺买单崇敬屈从磨光骑楼谢词古松菜市.参院昌黎年月过望滤纸南侧.发信得数兰若校长破缝放晴全长磨炼! ...

  5. C语言循环语句实训项目,C语言程序设计与项目实训

    C语言程序设计与项目实训 编辑 锁定 讨论 上传视频 <C语言程序设计与项目实训>是2013年清华大学出版社出版的图书,作者是吴艳平.徐海燕. 书    名 C语言程序设计与项目实训 作  ...

  6. c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)

    C语言游戏编程 #include /*DOS接口函数*/ #include /*数学函数的定义*/ #include /*屏幕操作函数*/ #include /*I/O函数*/ #include /* ...

  7. C语言经典编程(浙大版C语言第三版)详解

    C语言经典编程详解 – 一览表: 1.[C语言经典编程]练习2-1 Programming in C is fun! (5分) 2.[C语言经典编程]练习2-3 输出倒三角图案 (5分) 3.[C语言 ...

  8. C语言图形编程(绘图函数部分),C语言图形编程(三、绘图函数-02)12

    C语言图形编程(三.绘图函数-02)12 } 84. putimage() 输出图像函数 功能: 函数putimage()将一个先前保存在内存中的图像输出到屏幕上. 用法: 此函数调用方式为void ...

  9. c语言sleep_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美

    前言 1.本文主要围绕 如何 在 控制台上 下起 一场 只有自己能看见的雪 2.是个简易跨平台的,主要是C语言 3.动画 采用 1s 40帧, 雪花具有 x轴速度和y轴速度 4.比较简单,可以给学生作 ...

最新文章

  1. parentViewController
  2. 死磕Java并发:Java内存模型之总结
  3. /usr/bin被删除的操作
  4. DL之YoloV3:YoloV3论文《YOLOv3: An Incremental Improvement》的翻译与解读
  5. boost::core模块实现交换primitive
  6. SugarCRM 在Html中增加超连接按钮
  7. [SCM]源码管理 - perforce的集中授权+分布式团队+负载均衡+可扩展性+高可用性+灾难恢复...
  8. springboot 多了8小时_日本人不明白:中国的奶茶有多好喝,值得排队8小时去买?...
  9. 如何制作一个塔防游戏 Cocos2d x 2 0 4
  10. 【汇总】numpy函数合集
  11. 写出优质Java代码的4个技巧
  12. LINUX系统下监控DELL服务器硬盘状态
  13. 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 1130期】
  14. 两台计算机怎么ping通,怎么ping网络(2个网段电脑怎么ping通)
  15. android调用虚拟摄像头方法,Android设备虚拟摄像头技术实现
  16. linux有线无线同时使用教程,巧用无线路由器 让有线、无线网络互通
  17. android开发动态图ae,动影ae动态图片特效制作
  18. 【项目管理】交付绩效域管理
  19. 数字藏品即是风口也是风险!
  20. 快手短视频直播间怎么提高人气热度,直播间冷启动是什么?

热门文章

  1. android studio连接服务端代码,Android studio - 无法连接到LDAP服务器(示例代码)
  2. 24点游戏c语言程序代码,C语言实现24点游戏源代码
  3. java经典密码算法,浅析五种最常用的Java加密算法,以后可以直接拿来用了
  4. navicat连接mysql报错ssh_Navicat 连接SSH方式连接mysql报错 ssh:expected key exchange group packet...
  5. 计算机应用能力考试用书有哪些,全国专业技术人员计算机应用能力考试用书
  6. uc手机浏览器 手机模拟_网页为何总报浏览器漏洞?起底某些手机浏览器恶意推广行为...
  7. 中移4G模块-ML302-OpenCpu开发-2-MQTT连接阿里云
  8. 查看tsfresh提取(时间)序列特征的变量含义
  9. simpy练习案例(二):小车运行与充电
  10. pandas 使用把dataframe变为series