给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和,并用链表形式返回结果。
思路:
创建一个新的链表用于存储结果,并加一个cur指针
创建两个指针cur1 和 cur2,然后再创建一个int temp
依次遍历整个链表
/**
* 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) {
ListNode new_head(0);
ListNode *cur,*cur1,*cur2;
int num,temp = 0;
cur = &new_head;
cur1 = l1;
cur2 = l2;
while(cur1 ||cur2 || temp){
//计算
num = temp;
if(cur1 != NULL){
num += cur1->val;
cur1 = cur1->next;
}
if(cur2 != NULL){
num += cur2->val;
cur2 = cur2->next;
}
//进位
if(num > 9){
num = num%10;
temp = 1;
}else{
temp = 0;
}
//插入
ListNode * Node = new ListNode(num);
cur->next = Node;
cur = cur->next;
}
return new_head.next;
}
};