@@ -141,6 +141,31 @@ export default class LinkedList<T> {
141
141
return currentNode ;
142
142
}
143
143
144
+ public reverse ( ) : boolean {
145
+ if ( this . length < 2 || ! this . head || ! this . tail ) return false ;
146
+
147
+ this . tail = this . head ; // Current head will become the new tail
148
+
149
+ let first = this . head ;
150
+ let second = first . getNext ( ) ;
151
+ let tempNode ; // Will be the third sequential node in deletion sequence
152
+
153
+ // Travel up the tree while the second node is present, i.e. not null
154
+ while ( second ) {
155
+ tempNode = second . getNext ( ) ;
156
+
157
+ second . setNext ( first ) ;
158
+
159
+ first = second ;
160
+ second = tempNode ;
161
+ }
162
+
163
+ this . tail . setNext ( null ) ;
164
+ this . head = first ;
165
+
166
+ return true ;
167
+ }
168
+
144
169
public toString ( nodesPerGroup ?: number ) : string {
145
170
if ( this . length === 0 || ! this . head ) {
146
171
return "" ;
@@ -214,6 +239,11 @@ if (import.meta.main) {
214
239
printSearchFor ( 'Zuko' , ATLA ) ;
215
240
printGetValueAtIndex ( 2 , ATLA ) ;
216
241
printGetValueAtIndex ( 5 , ATLA ) ;
242
+
243
+ console . log ( '------------ Reversing List ------------' ) ;
244
+ ATLA . reverse ( ) ;
245
+ printLinkedList ( ATLA ) ;
246
+
217
247
console . log ( '----------------------------------' ) ;
218
248
219
249
printRemoveIndex ( 1 , ATLA ) ;
@@ -234,6 +264,10 @@ if (import.meta.main) {
234
264
ATLA . append ( 'Aang' ) ;
235
265
printLinkedList ( ATLA ) ;
236
266
267
+ console . log ( '------------ Reversing List ------------' ) ;
268
+ ATLA . reverse ( ) ;
269
+ printLinkedList ( ATLA ) ;
270
+
237
271
// RUN: deno run Data-Structures/Linked-Lists/LinkedList.ts
238
272
}
239
273
@@ -243,7 +277,7 @@ if (import.meta.main) {
243
277
// HEAD { value: "Appa", next: true }
244
278
// 1 { value: "Sokka", next: true }
245
279
// 2 { value: "Katara", next: false } TAIL
246
-
280
+ //
247
281
// --- Node Count: 6
248
282
// HEAD { value: "Appa", next: true }
249
283
// 1 { value: "Zuko", next: true }
@@ -259,40 +293,54 @@ if (import.meta.main) {
259
293
// "Zuko" found at index: 1
260
294
// Element at index 2: Sokka
261
295
// Element at index 5: Katara
296
+ // ------------ Reversing List ------------
297
+ // --- Node Count: 6
298
+ // HEAD { value: "Katara", next: true }
299
+ // 1 { value: "Iroh", next: true }
300
+ // 2 { value: "Aang", next: true }
301
+ // 3 { value: "Sokka", next: true }
302
+ // 4 { value: "Zuko", next: true }
303
+ // 5 { value: "Appa", next: false } TAIL
304
+ //
262
305
// ----------------------------------
263
- // Removing element at index 1: "Zuko "
306
+ // Removing element at index 1: "Iroh "
264
307
// --- Node Count: 5
265
- // HEAD { value: "Appa ", next: true }
266
- // 1 { value: "Sokka ", next: true }
267
- // 2 { value: "Aang ", next: true }
268
- // 3 { value: "Iroh ", next: true }
269
- // 4 { value: "Katara ", next: false } TAIL
308
+ // HEAD { value: "Katara ", next: true }
309
+ // 1 { value: "Aang ", next: true }
310
+ // 2 { value: "Sokka ", next: true }
311
+ // 3 { value: "Zuko ", next: true }
312
+ // 4 { value: "Appa ", next: false } TAIL
270
313
//
271
- // Removing element at index 0: "Appa "
314
+ // Removing element at index 0: "Katara "
272
315
// --- Node Count: 4
273
- // HEAD { value: "Sokka ", next: true }
274
- // 1 { value: "Aang ", next: true }
275
- // 2 { value: "Iroh ", next: true }
276
- // 3 { value: "Katara ", next: false } TAIL
316
+ // HEAD { value: "Aang ", next: true }
317
+ // 1 { value: "Sokka ", next: true }
318
+ // 2 { value: "Zuko ", next: true }
319
+ // 3 { value: "Appa ", next: false } TAIL
277
320
//
278
- // Removing element at index 2: "Iroh "
321
+ // Removing element at index 2: "Zuko "
279
322
// --- Node Count: 3
280
- // HEAD { value: "Sokka ", next: true }
281
- // 1 { value: "Aang ", next: true }
282
- // 2 { value: "Katara ", next: false } TAIL
323
+ // HEAD { value: "Aang ", next: true }
324
+ // 1 { value: "Sokka ", next: true }
325
+ // 2 { value: "Appa ", next: false } TAIL
283
326
//
284
- // Removing element at index 2: "Katara "
327
+ // Removing element at index 2: "Appa "
285
328
// --- Node Count: 2
286
- // HEAD { value: "Sokka ", next: true }
287
- // 1 { value: "Aang ", next: false } TAIL
329
+ // HEAD { value: "Aang ", next: true }
330
+ // 1 { value: "Sokka ", next: false } TAIL
288
331
//
289
- // Removing element at index 1: "Aang "
290
- // Removing element at index 0: "Sokka "
332
+ // Removing element at index 1: "Sokka "
333
+ // Removing element at index 0: "Aang "
291
334
// Empty linked list -_-
292
335
// ----------------------------------
293
336
// --- Node Count: 1
294
337
// HEAD { value: "Katara", next: false } TAIL
295
338
//
296
339
// --- Node Count: 2
297
340
// HEAD { value: "Katara", next: true }
298
- // 1 { value: "Aang", next: false } TAIL
341
+ // 1 { value: "Aang", next: false } TAIL
342
+ //
343
+ // ------------ Reversing List ------------
344
+ // --- Node Count: 2
345
+ // HEAD { value: "Aang", next: true }
346
+ // 1 { value: "Katara", next: false } TAIL
0 commit comments