我是靠谱客的博主 会撒娇手链,这篇文章主要介绍LeetCode第2题:Add Two Numbers,现在分享给大家,希望可以做个参考。

 

问题描述:给定两个非空的链表,表示两个非负整数。 数字以相反的顺序存储,每个节点包含一个数字。 添加两个数字并将其作为链表返回。

测试代码:

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL){} }; class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode l3(0); ListNode *preNode = &l3; int addNumber = 0; ListNode *b1 = l1, *b2 = l2; while(b1!=NULL || b2!=NULL || addNumber>0)//当l1和l2不为空或者addNumber>0任意一个条件成立 { ListNode *node = new ListNode(0);//临时的结构体指针 int val1 = b1 ? b1->val : 0;//如果b1不为空,val1=b1->val,否则为空 int val2 = b2 ? b2->val : 0;//如果b2不为空,val2=b2->val,否则为空 b1 = b1 ? b1->next : NULL;//如果b1不为空,b1指向下一个链表节点,否则为空 b2 = b2 ? b2->next: NULL;//如果b1不为空,b1指向下一个链表节点,否则为空 node->val = (val1 + val2 + addNumber) % 10; addNumber = (val1 + val2 + addNumber) / 10; preNode->next = node; preNode = node; } return l3.next; } }; int main() { ListNode * ln1_1 = new ListNode(2); ListNode * ln1_2 = new ListNode(4); ListNode * ln1_3 = new ListNode(3); ln1_1->next=ln1_2; ln1_2->next=ln1_3; ListNode * ln2_1 = new ListNode(5); ListNode * ln2_2 = new ListNode(6); ListNode * ln2_3 = new ListNode(4); ln2_1->next=ln2_2; ln2_2->next=ln2_3; Solution s; ListNode *l3=s.addTwoNumbers(ln1_1,ln2_1); while (l3!=NULL) { cout<<l3->val<<" "; l3=l3->next; } return 0; }


如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。

最后

以上就是会撒娇手链最近收集整理的关于LeetCode第2题:Add Two Numbers的全部内容,更多相关LeetCode第2题:Add内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部