leetcode-002

 

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

 

对链表的指针操作:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
12         ListNode a(0),*p=&a;
13         int t=0;
14         while(l1||l2||t){
15             int sum=(l1?l1->val:0)+(l2?l2->val:0)+t;
16             t=sum/10;
17             p->next=new ListNode(sum%10);
18             p=p->next;
19             l1=l1?l1->next:l1;
20             l2=l2?l2->next:l2;
21         }
22         return a.next;
23     }
24 };

 

posted @ 2018-04-17 22:02  Kiven#5197  阅读(264)  评论(0编辑  收藏  举报