11const LinkedList = require ( './linkedlist' ) ;
22
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 ) {
412 const result = new LinkedList ( ) ;
513 let reminder = 0 ;
614
@@ -15,22 +23,62 @@ function sumLists(list1, list2, isForwardOrder = false) {
1523 return result ;
1624}
1725
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 ( ) {
1966 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 ) ;
2370
2471
2572 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 ) ;
2976
3077
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
3481}
3582
36- test ( ) ;
83+ // test1();
84+ test2 ( ) ;
0 commit comments