1
1
const LinkedList = require('./linkedlist');
2
2
3
- function sumLists(list1, list2, isForwardOrder = false) {
3
+ function sumLists(list1, list2, {isForwardOrder} = {isForwardOrder: false}) {
4
+ if(isForwardOrder) {
5
+ return sumListsForwardOrder(list1, list2);
6
+ } else {
7
+ return sumListsReverseOrder(list1, list2);
8
+ }
9
+ }
10
+
11
+ function sumListsReverseOrder(list1, list2) {
4
12
const result = new LinkedList();
5
13
let reminder = 0;
6
14
@@ -15,22 +23,62 @@ function sumLists(list1, list2, isForwardOrder = false) {
15
23
return result;
16
24
}
17
25
18
- function test() {
26
+ function sumListsForwardOrder(list1, list2) {
27
+ const result = new LinkedList();
28
+ let values = [];
29
+ let num = 0;
30
+
31
+ // TODO: assert list length are the same
32
+
33
+ for(let l1 = list1.head, l2 = list2.head; l1 && l2; l1 = l1.next, l2 = l2.next) {
34
+ // TODO: validate data from both list are numbers
35
+ values.push(l1.data + l2.data);
36
+ }
37
+
38
+ for(let i = 0; i < values.length; i++) {
39
+ num += values[i] * Math.pow(10, values.length - i - 1);
40
+ }
41
+
42
+ num.toString().split('').reduce((list, e) => { list.addLast(e); return list; }, result);
43
+
44
+ return result;
45
+ }
46
+
47
+ function test1() {
48
+ const list1 = new LinkedList();
49
+ list1.addFirst(6);
50
+ list1.addFirst(1);
51
+ list1.addFirst(7);
52
+
53
+
54
+ const list2 = new LinkedList();
55
+ list2.addFirst(2);
56
+ list2.addFirst(9);
57
+ list2.addFirst(5);
58
+
59
+
60
+ console.log(list1.toString()); // 7 -> 1 -> 6
61
+ console.log(list2.toString()); // 5 -> 9 -> 2
62
+ console.log(sumLists(list1, list2).toString()); // 2 -> 1 -> 9 = 912
63
+ }
64
+
65
+ function test2() {
19
66
const list1 = new LinkedList();
20
- list1.add (6);
21
- list1.add (1);
22
- list1.add (7);
67
+ list1.addLast (6);
68
+ list1.addLast (1);
69
+ list1.addLast (7);
23
70
24
71
25
72
const list2 = new LinkedList();
26
- list2.add (2);
27
- list2.add (9);
28
- list2.add (5);
73
+ list2.addLast (2);
74
+ list2.addLast (9);
75
+ list2.addLast (5);
29
76
30
77
31
- console.log(list1.toString());
32
- console.log(list2.toString());
33
- console.log(sumLists(list1, list2).toString());
78
+ console.log(list1.toString()); // 6 -> 1 -> 7
79
+ console.log(list2.toString()); // 2 -> 9 -> 5
80
+ console.log(sumLists(list1, list2, {isForwardOrder: true} ).toString()); // 9 -> 1 -> 2 = 912
34
81
}
35
82
36
- test();
83
+ // test1();
84
+ test2();
0 commit comments