两个数相加

两个数相加
给出了两个非-kloc-0/链表来表示两个非负整数。其中,它们各自的数字以相反的顺序存储,每个节点只能存储一个数字。
如果我们把这两个数相加,我们将返回一个新的链表来表示它们的和。
您可以假设这些数字除了数字0以外都不是以0开头的。
示例:
输入2->:4->;3)+(5->;6 ->。4)输出:7->:0->;8原因:342+465 = 807
来源eetcode link:/problems/add-two-numbers的版权属于灵口网络。商业转载请联系官方授权,非商业转载请注明来源。
这个问题很简单,因为它表明数据是以相反的顺序存储的。只要熟悉链表的人都会很好的了解这个话题。关键是两个链表的长度可能不同,所以当一个链表是空,另一个链表应该是连接的。关于小数位数的增加,可以用一个额外的变量来表示是否进位。
/** *单链表的定义。*结构列表节点{ * int val*结构列表节点*下一步;* };*/
结构列表节点*添加两个数字(结构列表节点* l1,结构列表节点* l2){ int is _ over = 0;结构列表节点* ll = l1对于(;l1->。下一个||l2-&gt。下一个;){ if(!l1->。下一个){ l1->。next = malloc(sizeof(struct listnode));l1->。下一个-&gt。val = 0;l1->。下一个-&gt。next =(void *)0;}如果(!l2->。下一个){ l2->。next = malloc(sizeof(struct listnode));l2->。下一个-&gt。val = 0;l2->。下一个-&gt。next =(void *)0;} l1->。val=l1->。val+l2->。val+结束;if(l1->;val&gt。= 10){ is _ over = 1;l1->。val-= 10;} else is _ over = 0;l1=l1->。下一个;l2=l2->。下一个;} l1->。val=l1->。val+l2->。val+结束;if(l1->;val&gt。= 10){ is _ over = 1;l1->。val-= 10;} else is _ over = 0;如果(结束了!=0) { l1->。next = malloc(sizeof(struct listnode));l1->。下一个-&gt。val = 1;l1->。下一个-&gt。next天阿降临最新章节 =(void *)0;}返回ll;{}
结果如下:
两个数相加的结果
文章来源:www.atolchina.com