链表-Add Two Numbers

Posted summerkiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表-Add Two Numbers相关的知识,希望对你有一定的参考价值。

技术分享

第一版代码(很挫很罗嗦,不过是第一次做,记录一下成长的脚步!继续努力!)  

 1 /*struct ListNode {
 2      int val;
 3      struct ListNode *next;
 4 };*/
 5 
 6 typedef struct ListNode ListNode;
 7 
 8 struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
 9     ListNode *result = (ListNode *)malloc(sizeof(ListNode));
10     result->next = NULL;
11     ListNode *now = result;
12 
13     ListNode *p1 = l1;
14     ListNode *p2 = l2;
15     int carry = 0;
16 
17     while(p1&&p2)
18     {
19         ListNode *p = (ListNode *)malloc(sizeof(ListNode));
20         p->next = NULL;
21         int r = p1->val + p2->val + carry;
22         carry = r/10;   
23         p->val = r%10;
24         now->next = p;  
25         now = now->next;
26         p1 = p1->next;
27         p2 = p2->next;
28     }
29 
30     while(p1)
31     {
32         ListNode *p = (ListNode *)malloc(sizeof(ListNode));
33         p->next = NULL;
34         int r = p1->val + carry;
35         carry = r/10;   
36         p->val = r%10;
37         now->next = p;  
38         now = now->next;
39         p1 = p1->next;
40     }
41 
42     while(p2)
43     {
44         ListNode *p = (ListNode *)malloc(sizeof(ListNode));
45         p->next = NULL;
46         int r = p2->val + carry;
47         carry = r/10;   
48         p->val = r%10;
49         now->next = p;  
50         now = now->next;
51         p2 = p2->next;
52     }
53     if(carry)
54     {
55         ListNode *p = (ListNode *)malloc(sizeof(ListNode));
56         p->next = NULL;
57         p->val = carry;
58         now->next = p;  
59         now = now->next;
60     }
61 
62     return result->next;
63     
64 }

要注意返回的内容必须符合题目要求,一开始我直接返回了result,但是leetcode测试的时候会把空的头结点也输出,不符合题目要求。

要全面考虑问题,这题的特殊情况主要体现在进位部分,如999+1这种情况,还有就是两个数的位数可能会不同。

【待补充C++版本。。。】

以上是关于链表-Add Two Numbers的主要内容,如果未能解决你的问题,请参考以下文章

leetcode链表--14add-two-numbers(两链表相加 得到新链表)

(链表 importance) leetcode 2. Add Two Numbers

Leetcode:Add Two Numbers

[LeetCode]Add Two Numbers

[LeetCode]2. Add Two Numbers链表相加

数据结构算法 LinkList (Add Two Numbers)