您的位置:首页 > 其它

lintcode ----链表求和

2016-05-23 10:29 218 查看
ListNode *addLists(ListNode *l1, ListNode *l2)
{
// write your code here
if(l1==NULL)
return l2;
else if(l2==NULL)
return l1;
int temp=0;
int res=0;
ListNode *head = new ListNode(0);
ListNode *p = head;
while(l1!=NULL&&l2!=NULL)
{
res=l1->val+l2->val+temp;
temp=res/10;
res=res%10;
p->next=new ListNode(res);
p=p->next;
l1=l1->next;
l2=l2->next;

}
while(l1!=NULL)
{
res=l1->val+temp;
temp=res/10;
res=res%10;
p->next=new ListNode(res);
p=p->next;
l1=l1->next;
}
while(l2!=NULL)
{
res=l2->val+temp;
temp=res/10;
res=res%10;
p->next=new ListNode(res);
p=p->next;
l2=l2->next;
}
if(temp!=0)
{
p->next=new ListNode(temp);
}
return head->next;
}


实现:

首先声明一个带头结点的空链,判断两个链表是否为空,不为空取对应的val,直到有一个链表为空,跳出,继续判断不为空的链表.内部相加时候,声明一个符号位temp,和临时结果res,进位加到下一次累加中。最后,如果都遍历完,符号位还不为0,则添加一个为1的节点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: