链表应用----二进制数加1进位表示链表存储
来源:互联网 发布:淘宝买家等级怎么升的 编辑:程序博客网 时间:2024/05/22 00:14
之前从慕课西北大学数据结构老师那里的例题
问题描述:建立一个带头结点的线性链表,用以存放输入的二进制数,
链表的每一个data域存放一个二进制位,并在此链表上实现对二进制数加1的运算。
问题分析如图:
通俗解释就是,遍历链表找出一串二进制数最低位的0位,并记录下位置,此位置变1,后边位置的数变0,例如(1010110011)加1运算就变成(1010110011),若是111111满位1的数,就用头插法插入新结点存1,原来的链表data域全变0,111111就变成了1000000.
typedef struct Snode{int data;Snode *next;}Snode,*PSnode;void BinaryAddOne(PSnode&L){//链表表头到表尾依次为高位到低位 PSnode Temp, q, p, s;q = L->next; //遍历查找的头指针p = L;s = NULL; //查找0位的标记指针while (q){if (q->data==0)s = q;//记录从最高位开始的最后一个0位的位置q = q->next;}if (s){s->data = 1;//记录的位置变为1 s = s->next;while (s){s->data = 0;//其后边的1位全变为0s = s->next;}}else{//Temp 为二进制位满1时新进位空间开辟指针 形如1 3 7 15等二进制表示的下一个高位Temp = new Snode;Temp->data = 1;//采用头插法进行新进位的添加Temp->next = p->next;p->next = Temp;Temp = Temp->next;while (Temp)//新进位后的所有1位全变为0{Temp->data = 0;Temp = Temp->next;}}}
0 0
- 链表应用----二进制数加1进位表示链表存储
- 链表存储二进制,并且把此二进制数加1
- 链表之实现对二进制数的加一操作
- 二进制数加1运算
- 利用进位表计算十进制到二进制的转换
- 链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 用C语言编写 用以存放输入的二进制数 建立 一个带头结点的线性链表
- 定点数二进制表示
- 浮点数二进制表示
- 浮点数二进制表示
- 二进制数的表示
- 浮点数二进制表示
- 浮点数二进制表示
- C语言位运算应用一:求一个数的二进制表示中1的个数
- 高精度数连续加n次1所产生的进位次数总和
- 每天一道LeetCode-----将用数组表示的整数加一,两个用字符串表示的(二进制)数相加
- IEEE 浮点数二进制表示
- 浮点数的二进制表示
- 浮点数的二进制表示
- C语言哈夫曼树和哈夫曼编码的实现
- 关于android中obtainMessage()的小疑惑
- 使用js监听手机端输入法的变化
- 一维码EAN 13简介及其解码实现(zxing-cpp)
- CSS+DIV定位分析(relative,absolute,static,fixed)
- 链表应用----二进制数加1进位表示链表存储
- FilterDispatcher is deprecated!
- Struts2-配置
- zepto笔记
- 关于程序的数组
- 文章标题
- 计算字符串的最长回文子序列
- day9 part2:JavaScript DOM编程学习笔记03
- 上位机之实时动态折线图制作