注册 登录
编程论坛 数据结构与算法

如何用线性链表实现两个整书的相加呢?

NV77 发布于 2009-11-14 21:51, 915 次点击
怎么用线型链表实现两个整数的相加呢?帮忙给个算法。谢谢
6 回复
#2
NV772009-11-15 22:16
谁帮个忙啊    谢谢啊   
#3
玩出来的代码2009-11-15 23:27
两个整数相加,如45+50=..?一个节点存放一个整数?
或者是一个节点存放一位数,如45,4 5分别存放在两个节点中?
第一种,可以建立一个链表,把需要的数存入节点中,相加释放一个节点,或建立两个链表相加清空一个链表。
第二种情况,可以实现较大的数相加,建立两个链表,一个节点存放一个整数的一位数,存放数小的链表加到另一链表上,从链表表尾开始相加,向前移(用双向链表)。如果最高位有进位在输出结果的时候应该判断一下是否大于10输出相应的最高位的值,或者建立链表时置第一个节点为0,输出时判断第一个节点是否为0.


#4
NV772009-11-16 22:45
回复 3楼 玩出来的代码
非常感谢你    也很佩服你  向你看齐了  
再问一下   比如一个四位数    一个结点存放一位
比如2345    怎么放在四个结点里呢  
自动的吗?
#5
玩出来的代码2009-11-17 13:16
可以以字符串的形式输入,为一个节点赋值时转换成数值。如输入的字符串是“12345”,为第一个节点赋值时,p->data=
a[i]+'0';(i为1);循环控制
while(a[i]!='\0')
{
     分配空间;
     赋值;
     接到链表表尾;
     i++;
}
或者把一个整数拆开输入,12345,输入,1 2 3 4 5
#6
NV772009-11-17 17:56
回复 5楼 玩出来的代码
一语道破   
我看到一个例子    就是用的字符串  
当时没看明白      现在明白了  
完全有思路了     感谢
#7
程落薰2012-05-13 21:41
回复 3楼 玩出来的代码
那如果出现了两个数据不一样长,比如:45987432+49797 呢?我采用的是用单链表逆序建立之后进行相加,并存放到另外一个单链表中,在逆序输出的方法。但在存放是发现,如果不是一样长的,那剩下的数据要怎么进行相加呢?
1