-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path002_AddTwoNums.cpp
99 lines (79 loc) · 2.21 KB
/
002_AddTwoNums.cpp
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream>
#include <list>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
// Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution{
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
//ListNode *list_res = new ListNode;
//list_res -> next = nullptr;
int carry = 0;
ListNode head = ListNode(0);
ListNode *temp = &head;
while (l1 || l2 || carry)
{
if (l1)
{
carry = carry + l1->val;
l1 = l1 ->next;
}
if (l2)
{
carry = carry + l2->val;
l2 = l2 ->next;
}
temp -> next = new ListNode(carry % 10);
temp = temp -> next;
carry = carry / 10;
}
return head.next;
}
};
void ListNode_output(ListNode * list_input)
{
while(list_input){
cout << list_input->val << ' ';
list_input = list_input->next;
}
cout << endl;
}
int main()
{
/*l1*/
ListNode *l1_1 = new ListNode;
l1_1 -> val = 2;
l1_1 -> next = nullptr;
ListNode *l1_2 = new ListNode;
l1_2 -> val = 4;
l1_2 -> next = nullptr;
ListNode *l1_3 = new ListNode;
l1_3 -> val = 3;
l1_3 -> next = nullptr;
l1_1 -> next = l1_2;
l1_2 -> next = l1_3;
/*l2*/
ListNode *l2_1 = new ListNode;
l2_1 -> val = 5;
l2_1 -> next = nullptr;
ListNode *l2_2 = new ListNode;
l2_2 -> val = 6;
l2_2 -> next = nullptr;
ListNode *l2_3 = new ListNode;
l2_3 -> val = 4;
l2_3 -> next = nullptr;
l2_1 -> next = l2_2;
l2_2 -> next = l2_3;
Solution Sol1;
ListNode_output(Sol1.addTwoNumbers(l1_1, l2_1));
return 0;
}