遍历链表:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
int flag=0,temp;
ListNode *res=l1;
ListNode *last;
while(l1!=NULL&&l2!=NULL)
{
temp=l1->val + l2->val + flag;
l1->val=temp%10;
flag=temp/10;
last=l1;
l1=l1->next;
l2=l2->next;
}
while(l1!=NULL)
{
temp=l1->val + flag;
l1->val=temp%10;
flag=temp/10;
last=l1;
l1=l1->next;
}
last->next=l2;
while(l2!=NULL)
{
temp=l2->val + flag;
l2->val=temp%10;
flag=temp/10;
last=l2;
l2=l2->next;
}
if(flag>0)
{
ListNode *node=(ListNode*)malloc(sizeof(ListNode));
node->val=flag;
node->next=NULL;
last->next = node;
}
return res;
}
};
python 版:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
l3 = ListNode(None)
last = ListNode(None)
l3 = l1
jin = 0
while l1 and l2:
l1.val += (l2.val + jin)
jin = l1.val // 10
l1.val = l1.val % 10
last = l1
l1 = l1.next
l2 = l2.next
if l1:
while jin and l1:
l1.val += jin
jin = l1.val // 10
l1.val = l1.val % 10
last = l1
l1 = l1.next
if l2:
last.next = l2
while jin and l2:
l2.val += jin
jin = l2.val // 10
l2.val = l2.val % 10
last = l2
l2 = l2.next
if jin:
newNode = ListNode(jin)
last.next = newNode
return l3