题目描述:
建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。

问题分析:
①建链表:二进制数可用带头结点的单链表存储,第一个结点存储二进制数的最高位,依次存储,最后一个结点存储二进制数的最低位。

②根据二进制加法规则:实现二进制数 加1运算,方向从低位往高位找到第一个值为0的位,,从该位开始,对后面所有低位进行求反运算。

③链表实现二进制加1时,从高位往低位与运算方向正好相反,从第个结点开始找 ,找出最后一个值域为0的结点,把该结点值域赋为1,其后所有结点的值域赋为0。

④若在链表中未找到值域为0的结点,则表示该二进制数各位均为1,此时,申请一新结点,值域为1,插人到头结点与原链表的第一个结点之间,成为新链表的第一个结点,其后所有结点的值域赋为0。

代码展现:
函数部分:

Linklist *plus_one(Linklist *L)
{  Linklist *p,*s=NULL;p=L->next;//p指针遍历  while(p != NULL){if(p->data == 0)//s(指向二进制数中为零的最低位次)随着p指针的后移 不断更新 {s=p;} p=p->next;}if(s != NULL){s->data=1;s=s->next;while(s != NULL){  s->data = 0;s=s->next;} }else{   //在头结点与首元节点插入一节点 s = new Linklist;s->data = 1 ;s->next=L->next;L->next=s;L->data++; //其余节点值为0p=s->next; while(p != NULL){p->data=0;p=p->next;}   }return L; } 

主函数:

 Linklist *L,*p;cout<<" 用链表实现二进制加一:"<<endl;for(int i=0;i<4;i++){L = create_Linklist();int len=1; while( len<=L->data){cout<<get_Linklist(L,len)->data;len++; } cout<<"+1=";L=plus_one(L);len=1;while(len<=L->data){cout<<get_Linklist(L,len)->data;len++;} cout<<endl; }

效果展示:

用链表实现对二进制数加1的运算相关推荐

  1. 创建带头结点单链表实现二进制数加1的运算

    题目描述: 建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位.在此链表上实现对二进制数加1的运算,并输出运算结果. 测试数据1: 1010011 测试数据 ...

  2. 线性链表实现对二进制数加1运算

    描述:建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算. 分析: 算法描述: void buildAdd(linkl ...

  3. 建立一个带头结点的线性链表,用以存放输入的二进制数,链表的每一个节点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算;

    1.题目:建立一个带头结点的线性链表,用以存放输入的二进制数,链表的每一个节点的data域存放一个二进制位.并在此链表上实现对二进制数加1的运算: 部分函数调用参考:https://blog.csdn ...

  4. C语言:链表实现二进制数加1运算

    题目 建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位. 在此链表上实现对二进制数加1的运算,并输出运算结果 测试数据1: 1010011 测试数据2 1 ...

  5. 每天一算法(一)——用链表实现加减乘运算

    用链表实现加减乘运算 // resultW.cpp : 定义控制台应用程序的入口点. #include "F:\HU\resultW\resultW\stdafx.h" #incl ...

  6. c语言中字符减减自符意思,C语言中的自加自减运算

    [摘 要]C语言中运算符十分丰富,自加运算和自减运算是c语言的教学中的重点和难点,但我们只要在教学中抓住运算的基本定义,通过经典题型分析和适度深入解析,就不难达到熟练应用之目的. [关键词]运算的定义 ...

  7. 分数加减法混合计算机,分数小数加减混合运算练习题及答案.doc

    分数小数加减混合运算练习题及答案 分数小数加减混合运算练习题及答案 1. 知识目标:会选择比较适合的方法进行分数,小数加减混合运算. 2. 认知目标:通过练习,使学生初步了解将未知转化为已知的数学思想 ...

  8. python定义一个复数类complex、并实现复数相加_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算...

    题目: 用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加.减运算 复数具有实部和虚部两部分,如2+5i就是一个复数,其中2为实部,5i为虚部;两复数相加时,实部与实部相加 ...

  9. 数学的基本运算可分为三个等级。第一级为加、减运算,“连加”或“连减”时发明了第二级运算——乘法和除法,“连乘”和“连除”,即“乘方”。乘方有两种逆运算分别是“开方”和“对数”。这是第三级运算特殊之处

    作者:李狗嗨 链接:https://www.zhihu.com/question/26097157/answer/265975884 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

最新文章

  1. mysql 执行计划 什么用_简述MySQL的执行计划的作用及使用方法
  2. python进程池multiprocessing.Pool运行错误:The freeze_support() line can be omitted if the program is not g
  3. 给大忙人看的Java核心技术笔记(8、Stream)
  4. Tensorflow-Estimator-自定义估算器
  5. AnyTrans使用教程:将照片从 Mac 传输到 iPhone 的方法
  6. kali201904更新国内源的步骤
  7. android textview 设置单行最大宽度和ellipsize省略号时整体变短的问题
  8. 147.对链表进行插入排序
  9. 电力系统分析计算机辅助试题,电力系统计算机辅助分析综合训练实验报告.doc...
  10. FMI飞马网 | AI人工智能:54份行业重磅报告汇总(附下载)
  11. Kafka集群搭建过程(kafka2.5+eagle)
  12. 图片浏览器java程序_图片浏览器用java实现
  13. 替代MP9486A 输入120V降压恒压IC方案 GPS防盗器IC方案
  14. java独步寻花,江畔独步寻花
  15. Springboot应用中过滤器chain.doFilter后设置header无效
  16. 收银系统的优势功能有哪些?
  17. 【人工智能】2028:AI创造了哪些工作?未来10年21个核心工作岗位 。
  18. 谷歌翻译 google translation API github开源 实践
  19. spark 2.3源码分析之SortShuffleWriter
  20. java学习基础课之线程(渡一教育)(十七)

热门文章

  1. Unicode blocks 统计
  2. play 认证相关的组件 silhouette
  3. 经验法则:回波损耗多少才算多?//学习记录
  4. 虚幻引擎图文笔记:蓝图中二项切换节点(Flip Flop)的用法
  5. 洛谷P1868 饥饿的奶牛 题解
  6. Java的思考01 - 当大老板还是小老板
  7. 做一个温暖如春的女子
  8. windows10计算机里输入法,Win10电脑输入法图标不见了怎么办?
  9. struct 结构体的内存对齐
  10. php简单的商城系统,DouPHP轻量级商城管理系统