1
1
/*
2
- single linked list merge
3
- This problem requires you to merge two ordered singly linked lists into one ordered singly linked list
2
+ single linked list merge
3
+ This problem requires you to merge two ordered singly linked lists into one ordered singly linked list
4
4
*/
5
5
// I AM NOT DONE
6
6
@@ -16,10 +16,7 @@ struct Node<T> {
16
16
17
17
impl < T > Node < T > {
18
18
fn new ( t : T ) -> Node < T > {
19
- Node {
20
- val : t,
21
- next : None ,
22
- }
19
+ Node { val : t, next : None }
23
20
}
24
21
}
25
22
#[ derive( Debug ) ]
@@ -69,15 +66,14 @@ impl<T> LinkedList<T> {
69
66
} ,
70
67
}
71
68
}
72
- pub fn merge ( list_a : LinkedList < T > , list_b : LinkedList < T > ) -> Self
73
- {
74
- //TODO
75
- Self {
69
+ pub fn merge ( list_a : LinkedList < T > , list_b : LinkedList < T > ) -> Self {
70
+ //TODO
71
+ Self {
76
72
length : 0 ,
77
73
start : None ,
78
74
end : None ,
79
75
}
80
- }
76
+ }
81
77
}
82
78
83
79
impl < T > Display for LinkedList < T >
@@ -130,44 +126,44 @@ mod tests {
130
126
131
127
#[ test]
132
128
fn test_merge_linked_list_1 ( ) {
133
- let mut list_a = LinkedList :: < i32 > :: new ( ) ;
134
- let mut list_b = LinkedList :: < i32 > :: new ( ) ;
135
- let vec_a = vec ! [ 1 , 3 , 5 , 7 ] ;
136
- let vec_b = vec ! [ 2 , 4 , 6 , 8 ] ;
137
- let target_vec = vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
138
-
139
- for i in 0 ..vec_a. len ( ) {
140
- list_a. add ( vec_a[ i] ) ;
141
- }
142
- for i in 0 ..vec_b. len ( ) {
143
- list_b. add ( vec_b[ i] ) ;
144
- }
145
- println ! ( "list a {} list b {}" , list_a, list_b) ;
146
- let mut list_c = LinkedList :: < i32 > :: merge ( list_a, list_b) ;
147
- println ! ( "merged List is {}" , list_c) ;
148
- for i in 0 ..target_vec. len ( ) {
149
- assert_eq ! ( target_vec[ i] , * list_c. get( i as i32 ) . unwrap( ) ) ;
150
- }
151
- }
152
- #[ test]
153
- fn test_merge_linked_list_2 ( ) {
154
- let mut list_a = LinkedList :: < i32 > :: new ( ) ;
155
- let mut list_b = LinkedList :: < i32 > :: new ( ) ;
156
- let vec_a = vec ! [ 11 , 33 , 44 , 88 , 89 , 90 , 100 ] ;
157
- let vec_b = vec ! [ 1 , 22 , 30 , 45 ] ;
158
- let target_vec = vec ! [ 1 , 11 , 22 , 30 , 33 , 44 , 45 , 88 , 89 , 90 , 100 ] ;
159
-
160
- for i in 0 ..vec_a. len ( ) {
161
- list_a. add ( vec_a[ i] ) ;
162
- }
163
- for i in 0 ..vec_b. len ( ) {
164
- list_b. add ( vec_b[ i] ) ;
165
- }
166
- println ! ( "list a {} list b {}" , list_a, list_b) ;
167
- let mut list_c = LinkedList :: < i32 > :: merge ( list_a, list_b) ;
168
- println ! ( "merged List is {}" , list_c) ;
169
- for i in 0 ..target_vec. len ( ) {
170
- assert_eq ! ( target_vec[ i] , * list_c. get( i as i32 ) . unwrap( ) ) ;
171
- }
172
- }
173
- }
129
+ let mut list_a = LinkedList :: < i32 > :: new ( ) ;
130
+ let mut list_b = LinkedList :: < i32 > :: new ( ) ;
131
+ let vec_a = vec ! [ 1 , 3 , 5 , 7 ] ;
132
+ let vec_b = vec ! [ 2 , 4 , 6 , 8 ] ;
133
+ let target_vec = vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
134
+
135
+ for i in 0 ..vec_a. len ( ) {
136
+ list_a. add ( vec_a[ i] ) ;
137
+ }
138
+ for i in 0 ..vec_b. len ( ) {
139
+ list_b. add ( vec_b[ i] ) ;
140
+ }
141
+ println ! ( "list a {} list b {}" , list_a, list_b) ;
142
+ let mut list_c = LinkedList :: < i32 > :: merge ( list_a, list_b) ;
143
+ println ! ( "merged List is {}" , list_c) ;
144
+ for i in 0 ..target_vec. len ( ) {
145
+ assert_eq ! ( target_vec[ i] , * list_c. get( i as i32 ) . unwrap( ) ) ;
146
+ }
147
+ }
148
+ #[ test]
149
+ fn test_merge_linked_list_2 ( ) {
150
+ let mut list_a = LinkedList :: < i32 > :: new ( ) ;
151
+ let mut list_b = LinkedList :: < i32 > :: new ( ) ;
152
+ let vec_a = vec ! [ 11 , 33 , 44 , 88 , 89 , 90 , 100 ] ;
153
+ let vec_b = vec ! [ 1 , 22 , 30 , 45 ] ;
154
+ let target_vec = vec ! [ 1 , 11 , 22 , 30 , 33 , 44 , 45 , 88 , 89 , 90 , 100 ] ;
155
+
156
+ for i in 0 ..vec_a. len ( ) {
157
+ list_a. add ( vec_a[ i] ) ;
158
+ }
159
+ for i in 0 ..vec_b. len ( ) {
160
+ list_b. add ( vec_b[ i] ) ;
161
+ }
162
+ println ! ( "list a {} list b {}" , list_a, list_b) ;
163
+ let mut list_c = LinkedList :: < i32 > :: merge ( list_a, list_b) ;
164
+ println ! ( "merged List is {}" , list_c) ;
165
+ for i in 0 ..target_vec. len ( ) {
166
+ assert_eq ! ( target_vec[ i] , * list_c. get( i as i32 ) . unwrap( ) ) ;
167
+ }
168
+ }
169
+ }
0 commit comments