data-structure-typed 2.6.1 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/dist/cjs/binary-tree.cjs +2927 -23688
- package/dist/cjs/graph.cjs +845 -2634
- package/dist/cjs/hash.cjs +185 -616
- package/dist/cjs/heap.cjs +266 -818
- package/dist/cjs/index.cjs +5116 -31358
- package/dist/cjs/linked-list.cjs +644 -2615
- package/dist/cjs/matrix.cjs +220 -535
- package/dist/cjs/priority-queue.cjs +266 -818
- package/dist/cjs/queue.cjs +637 -2343
- package/dist/cjs/stack.cjs +124 -530
- package/dist/cjs/trie.cjs +145 -592
- package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
- package/dist/cjs-legacy/graph.cjs +847 -2636
- package/dist/cjs-legacy/hash.cjs +181 -612
- package/dist/cjs-legacy/heap.cjs +266 -818
- package/dist/cjs-legacy/index.cjs +6657 -32899
- package/dist/cjs-legacy/linked-list.cjs +640 -2611
- package/dist/cjs-legacy/matrix.cjs +220 -535
- package/dist/cjs-legacy/priority-queue.cjs +266 -818
- package/dist/cjs-legacy/queue.cjs +634 -2340
- package/dist/cjs-legacy/stack.cjs +124 -530
- package/dist/cjs-legacy/trie.cjs +145 -592
- package/dist/esm/binary-tree.mjs +2927 -23688
- package/dist/esm/graph.mjs +845 -2634
- package/dist/esm/hash.mjs +185 -616
- package/dist/esm/heap.mjs +266 -818
- package/dist/esm/index.mjs +5116 -31358
- package/dist/esm/linked-list.mjs +644 -2615
- package/dist/esm/matrix.mjs +220 -535
- package/dist/esm/priority-queue.mjs +266 -818
- package/dist/esm/queue.mjs +637 -2343
- package/dist/esm/stack.mjs +124 -530
- package/dist/esm/trie.mjs +145 -592
- package/dist/esm-legacy/binary-tree.mjs +4352 -25113
- package/dist/esm-legacy/graph.mjs +847 -2636
- package/dist/esm-legacy/hash.mjs +181 -612
- package/dist/esm-legacy/heap.mjs +266 -818
- package/dist/esm-legacy/index.mjs +6657 -32899
- package/dist/esm-legacy/linked-list.mjs +640 -2611
- package/dist/esm-legacy/matrix.mjs +220 -535
- package/dist/esm-legacy/priority-queue.mjs +266 -818
- package/dist/esm-legacy/queue.mjs +634 -2340
- package/dist/esm-legacy/stack.mjs +124 -530
- package/dist/esm-legacy/trie.mjs +145 -592
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
- package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
- package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
- package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
- package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
- package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
- package/dist/types/data-structures/heap/heap.d.ts +194 -746
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
- package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
- package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
- package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
- package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
- package/dist/types/data-structures/queue/deque.d.ts +196 -804
- package/dist/types/data-structures/queue/queue.d.ts +99 -585
- package/dist/types/data-structures/stack/stack.d.ts +75 -481
- package/dist/types/data-structures/trie/trie.d.ts +98 -584
- package/dist/umd/data-structure-typed.js +6580 -32822
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
- package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +72 -104
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +67 -101
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
- package/docs-site-docusaurus/docs/api/classes/Heap.md +40 -68
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +17 -17
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +38 -38
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +45 -45
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +68 -96
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +38 -66
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +41 -74
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +38 -66
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +46 -79
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +40 -68
- package/docs-site-docusaurus/docs/api/classes/Queue.md +54 -78
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +68 -98
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
- package/docs-site-docusaurus/docs/api/classes/Stack.md +33 -53
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +57 -124
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +45 -116
- package/docs-site-docusaurus/docs/api/classes/Trie.md +37 -61
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
- package/package.json +1 -1
- package/src/data-structures/binary-tree/tree-multi-set.ts +15 -11
|
@@ -175,7 +175,6 @@ export declare class SinglyLinkedListNode<E = any> extends LinkedListNode<E> {
|
|
|
175
175
|
* console.log(result); // [10, 20, 30];
|
|
176
176
|
*/
|
|
177
177
|
export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase<E, R, SinglyLinkedListNode<E>> {
|
|
178
|
-
protected _equals: (a: E, b: E) => boolean;
|
|
179
178
|
/**
|
|
180
179
|
* Create a SinglyLinkedList and optionally bulk-insert elements.
|
|
181
180
|
* @remarks Time O(N), Space O(N)
|
|
@@ -234,179 +233,53 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
234
233
|
* @remarks Time O(1), Space O(1)
|
|
235
234
|
* @param elementOrNode - Element or node to append.
|
|
236
235
|
* @returns True when appended.
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
* @example
|
|
280
|
-
* // basic SinglyLinkedList creation and push operation
|
|
281
|
-
* // Create a simple SinglyLinkedList with initial values
|
|
282
|
-
* const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
|
|
283
|
-
*
|
|
284
|
-
* // Verify the list maintains insertion order
|
|
285
|
-
* console.log([...list]); // [1, 2, 3, 4, 5];
|
|
286
|
-
*
|
|
287
|
-
* // Check length
|
|
288
|
-
* console.log(list.length); // 5;
|
|
289
|
-
*
|
|
290
|
-
* // Push a new element to the end
|
|
291
|
-
* list.push(6);
|
|
292
|
-
* console.log(list.length); // 6;
|
|
293
|
-
* console.log([...list]); // [1, 2, 3, 4, 5, 6];
|
|
236
|
+
* @example
|
|
237
|
+
* // basic SinglyLinkedList creation and push operation
|
|
238
|
+
* // Create a simple SinglyLinkedList with initial values
|
|
239
|
+
* const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
|
|
240
|
+
*
|
|
241
|
+
* // Verify the list maintains insertion order
|
|
242
|
+
* console.log([...list]); // [1, 2, 3, 4, 5];
|
|
243
|
+
*
|
|
244
|
+
* // Check length
|
|
245
|
+
* console.log(list.length); // 5;
|
|
246
|
+
*
|
|
247
|
+
* // Push a new element to the end
|
|
248
|
+
* list.push(6);
|
|
249
|
+
* console.log(list.length); // 6;
|
|
250
|
+
* console.log([...list]); // [1, 2, 3, 4, 5, 6];
|
|
294
251
|
*/
|
|
295
252
|
push(elementOrNode: E | SinglyLinkedListNode<E>): boolean;
|
|
296
253
|
/**
|
|
297
254
|
* Remove and return the tail element.
|
|
298
255
|
* @remarks Time O(N), Space O(1)
|
|
299
256
|
* @returns Removed element or undefined.
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
* @example
|
|
343
|
-
* // SinglyLinkedList pop and shift operations
|
|
344
|
-
* const list = new SinglyLinkedList<number>([10, 20, 30, 40, 50]);
|
|
345
|
-
*
|
|
346
|
-
* // Pop removes from the end
|
|
347
|
-
* const last = list.pop();
|
|
348
|
-
* console.log(last); // 50;
|
|
349
|
-
*
|
|
350
|
-
* // Shift removes from the beginning
|
|
351
|
-
* const first = list.shift();
|
|
352
|
-
* console.log(first); // 10;
|
|
353
|
-
*
|
|
354
|
-
* // Verify remaining elements
|
|
355
|
-
* console.log([...list]); // [20, 30, 40];
|
|
356
|
-
* console.log(list.length); // 3;
|
|
257
|
+
* @example
|
|
258
|
+
* // SinglyLinkedList pop and shift operations
|
|
259
|
+
* const list = new SinglyLinkedList<number>([10, 20, 30, 40, 50]);
|
|
260
|
+
*
|
|
261
|
+
* // Pop removes from the end
|
|
262
|
+
* const last = list.pop();
|
|
263
|
+
* console.log(last); // 50;
|
|
264
|
+
*
|
|
265
|
+
* // Shift removes from the beginning
|
|
266
|
+
* const first = list.shift();
|
|
267
|
+
* console.log(first); // 10;
|
|
268
|
+
*
|
|
269
|
+
* // Verify remaining elements
|
|
270
|
+
* console.log([...list]); // [20, 30, 40];
|
|
271
|
+
* console.log(list.length); // 3;
|
|
357
272
|
*/
|
|
358
273
|
pop(): E | undefined;
|
|
359
274
|
/**
|
|
360
275
|
* Remove and return the head element.
|
|
361
276
|
* @remarks Time O(1), Space O(1)
|
|
362
277
|
* @returns Removed element or undefined.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
* @example
|
|
406
|
-
* // Remove from the front
|
|
407
|
-
* const list = new SinglyLinkedList<number>([10, 20, 30]);
|
|
408
|
-
* console.log(list.shift()); // 10;
|
|
409
|
-
* console.log(list.length); // 2;
|
|
278
|
+
* @example
|
|
279
|
+
* // Remove from the front
|
|
280
|
+
* const list = new SinglyLinkedList<number>([10, 20, 30]);
|
|
281
|
+
* console.log(list.shift()); // 10;
|
|
282
|
+
* console.log(list.length); // 2;
|
|
410
283
|
*/
|
|
411
284
|
shift(): E | undefined;
|
|
412
285
|
/**
|
|
@@ -414,68 +287,26 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
414
287
|
* @remarks Time O(1), Space O(1)
|
|
415
288
|
* @param elementOrNode - Element or node to prepend.
|
|
416
289
|
* @returns True when prepended.
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
* @example
|
|
460
|
-
* // SinglyLinkedList unshift and forward traversal
|
|
461
|
-
* const list = new SinglyLinkedList<number>([20, 30, 40]);
|
|
462
|
-
*
|
|
463
|
-
* // Unshift adds to the beginning
|
|
464
|
-
* list.unshift(10);
|
|
465
|
-
* console.log([...list]); // [10, 20, 30, 40];
|
|
466
|
-
*
|
|
467
|
-
* // Access elements (forward traversal only for singly linked)
|
|
468
|
-
* const second = list.at(1);
|
|
469
|
-
* console.log(second); // 20;
|
|
470
|
-
*
|
|
471
|
-
* // SinglyLinkedList allows forward iteration only
|
|
472
|
-
* const elements: number[] = [];
|
|
473
|
-
* for (const item of list) {
|
|
474
|
-
* elements.push(item);
|
|
475
|
-
* }
|
|
476
|
-
* console.log(elements); // [10, 20, 30, 40];
|
|
477
|
-
*
|
|
478
|
-
* console.log(list.length); // 4;
|
|
290
|
+
* @example
|
|
291
|
+
* // SinglyLinkedList unshift and forward traversal
|
|
292
|
+
* const list = new SinglyLinkedList<number>([20, 30, 40]);
|
|
293
|
+
*
|
|
294
|
+
* // Unshift adds to the beginning
|
|
295
|
+
* list.unshift(10);
|
|
296
|
+
* console.log([...list]); // [10, 20, 30, 40];
|
|
297
|
+
*
|
|
298
|
+
* // Access elements (forward traversal only for singly linked)
|
|
299
|
+
* const second = list.at(1);
|
|
300
|
+
* console.log(second); // 20;
|
|
301
|
+
*
|
|
302
|
+
* // SinglyLinkedList allows forward iteration only
|
|
303
|
+
* const elements: number[] = [];
|
|
304
|
+
* for (const item of list) {
|
|
305
|
+
* elements.push(item);
|
|
306
|
+
* }
|
|
307
|
+
* console.log(elements); // [10, 20, 30, 40];
|
|
308
|
+
*
|
|
309
|
+
* console.log(list.length); // 4;
|
|
479
310
|
*/
|
|
480
311
|
unshift(elementOrNode: E | SinglyLinkedListNode<E>): boolean;
|
|
481
312
|
/**
|
|
@@ -504,54 +335,12 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
504
335
|
* @remarks Time O(N), Space O(1)
|
|
505
336
|
* @param index - Zero-based index.
|
|
506
337
|
* @returns Element or undefined.
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
* @example
|
|
550
|
-
* // Access element by index
|
|
551
|
-
* const list = new SinglyLinkedList<string>(['a', 'b', 'c', 'd']);
|
|
552
|
-
* console.log(list.at(0)); // 'a';
|
|
553
|
-
* console.log(list.at(2)); // 'c';
|
|
554
|
-
* console.log(list.at(3)); // 'd';
|
|
338
|
+
* @example
|
|
339
|
+
* // Access element by index
|
|
340
|
+
* const list = new SinglyLinkedList<string>(['a', 'b', 'c', 'd']);
|
|
341
|
+
* console.log(list.at(0)); // 'a';
|
|
342
|
+
* console.log(list.at(2)); // 'c';
|
|
343
|
+
* console.log(list.at(3)); // 'd';
|
|
555
344
|
*/
|
|
556
345
|
at(index: number): E | undefined;
|
|
557
346
|
/**
|
|
@@ -566,49 +355,10 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
566
355
|
* @remarks Time O(N), Space O(1)
|
|
567
356
|
* @param index - Zero-based index.
|
|
568
357
|
* @returns Node or undefined.
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
* @example
|
|
609
|
-
* // Get node at index
|
|
610
|
-
* const list = new SinglyLinkedList<string>(['a', 'b', 'c']);
|
|
611
|
-
* console.log(list.getNodeAt(1)?.value); // 'b';
|
|
358
|
+
* @example
|
|
359
|
+
* // Get node at index
|
|
360
|
+
* const list = new SinglyLinkedList<string>(['a', 'b', 'c']);
|
|
361
|
+
* console.log(list.getNodeAt(1)?.value); // 'b';
|
|
612
362
|
*/
|
|
613
363
|
getNodeAt(index: number): SinglyLinkedListNode<E> | undefined;
|
|
614
364
|
/**
|
|
@@ -616,50 +366,11 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
616
366
|
* @remarks Time O(N), Space O(1)
|
|
617
367
|
* @param index - Zero-based index.
|
|
618
368
|
* @returns Removed element or undefined.
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
* @example
|
|
659
|
-
* // Remove by index
|
|
660
|
-
* const list = new SinglyLinkedList<string>(['a', 'b', 'c']);
|
|
661
|
-
* list.deleteAt(1);
|
|
662
|
-
* console.log(list.toArray()); // ['a', 'c'];
|
|
369
|
+
* @example
|
|
370
|
+
* // Remove by index
|
|
371
|
+
* const list = new SinglyLinkedList<string>(['a', 'b', 'c']);
|
|
372
|
+
* list.deleteAt(1);
|
|
373
|
+
* console.log(list.toArray()); // ['a', 'c'];
|
|
663
374
|
*/
|
|
664
375
|
deleteAt(index: number): E | undefined;
|
|
665
376
|
/**
|
|
@@ -667,50 +378,11 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
667
378
|
* @remarks Time O(N), Space O(1)
|
|
668
379
|
* @param [elementOrNode] - Element or node to remove; if omitted/undefined, nothing happens.
|
|
669
380
|
* @returns True if removed.
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
* @example
|
|
710
|
-
* // Remove first occurrence
|
|
711
|
-
* const list = new SinglyLinkedList<number>([1, 2, 3, 2]);
|
|
712
|
-
* list.delete(2);
|
|
713
|
-
* console.log(list.toArray()); // [1, 3, 2];
|
|
381
|
+
* @example
|
|
382
|
+
* // Remove first occurrence
|
|
383
|
+
* const list = new SinglyLinkedList<number>([1, 2, 3, 2]);
|
|
384
|
+
* list.delete(2);
|
|
385
|
+
* console.log(list.toArray()); // [1, 3, 2];
|
|
714
386
|
*/
|
|
715
387
|
delete(elementOrNode: E | SinglyLinkedListNode<E> | undefined): boolean;
|
|
716
388
|
/**
|
|
@@ -719,50 +391,11 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
719
391
|
* @param index - Zero-based index.
|
|
720
392
|
* @param newElementOrNode - Element or node to insert.
|
|
721
393
|
* @returns True if inserted.
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
* @example
|
|
762
|
-
* // Insert at index
|
|
763
|
-
* const list = new SinglyLinkedList<number>([1, 3]);
|
|
764
|
-
* list.addAt(1, 2);
|
|
765
|
-
* console.log(list.toArray()); // [1, 2, 3];
|
|
394
|
+
* @example
|
|
395
|
+
* // Insert at index
|
|
396
|
+
* const list = new SinglyLinkedList<number>([1, 3]);
|
|
397
|
+
* list.addAt(1, 2);
|
|
398
|
+
* console.log(list.toArray()); // [1, 2, 3];
|
|
766
399
|
*/
|
|
767
400
|
addAt(index: number, newElementOrNode: E | SinglyLinkedListNode<E>): boolean;
|
|
768
401
|
/**
|
|
@@ -777,153 +410,31 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
777
410
|
* Check whether the list is empty.
|
|
778
411
|
* @remarks Time O(1), Space O(1)
|
|
779
412
|
* @returns True if length is 0.
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
* @example
|
|
821
|
-
* // Check empty
|
|
822
|
-
* console.log(new SinglyLinkedList().isEmpty()); // true;
|
|
413
|
+
* @example
|
|
414
|
+
* // Check empty
|
|
415
|
+
* console.log(new SinglyLinkedList().isEmpty()); // true;
|
|
823
416
|
*/
|
|
824
417
|
isEmpty(): boolean;
|
|
825
418
|
/**
|
|
826
419
|
* Remove all nodes and reset length.
|
|
827
420
|
* @remarks Time O(N), Space O(1)
|
|
828
421
|
* @returns void
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
* @example
|
|
870
|
-
* // Remove all
|
|
871
|
-
* const list = new SinglyLinkedList<number>([1, 2, 3]);
|
|
872
|
-
* list.clear();
|
|
873
|
-
* console.log(list.isEmpty()); // true;
|
|
422
|
+
* @example
|
|
423
|
+
* // Remove all
|
|
424
|
+
* const list = new SinglyLinkedList<number>([1, 2, 3]);
|
|
425
|
+
* list.clear();
|
|
426
|
+
* console.log(list.isEmpty()); // true;
|
|
874
427
|
*/
|
|
875
428
|
clear(): void;
|
|
876
429
|
/**
|
|
877
430
|
* Reverse the list in place.
|
|
878
431
|
* @remarks Time O(N), Space O(1)
|
|
879
432
|
* @returns This list.
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
* @example
|
|
923
|
-
* // Reverse the list in-place
|
|
924
|
-
* const list = new SinglyLinkedList<number>([1, 2, 3, 4]);
|
|
925
|
-
* list.reverse();
|
|
926
|
-
* console.log([...list]); // [4, 3, 2, 1];
|
|
433
|
+
* @example
|
|
434
|
+
* // Reverse the list in-place
|
|
435
|
+
* const list = new SinglyLinkedList<number>([1, 2, 3, 4]);
|
|
436
|
+
* list.reverse();
|
|
437
|
+
* console.log([...list]); // [4, 3, 2, 1];
|
|
927
438
|
*/
|
|
928
439
|
reverse(): this;
|
|
929
440
|
/**
|
|
@@ -983,53 +494,13 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
983
494
|
* Deep clone this list (values are copied by reference).
|
|
984
495
|
* @remarks Time O(N), Space O(N)
|
|
985
496
|
* @returns A new list with the same element sequence.
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
* @example
|
|
1027
|
-
* // Deep copy
|
|
1028
|
-
* const list = new SinglyLinkedList<number>([1, 2, 3]);
|
|
1029
|
-
* const copy = list.clone();
|
|
1030
|
-
* copy.pop();
|
|
1031
|
-
* console.log(list.length); // 3;
|
|
1032
|
-
* console.log(copy.length); // 2;
|
|
497
|
+
* @example
|
|
498
|
+
* // Deep copy
|
|
499
|
+
* const list = new SinglyLinkedList<number>([1, 2, 3]);
|
|
500
|
+
* const copy = list.clone();
|
|
501
|
+
* copy.pop();
|
|
502
|
+
* console.log(list.length); // 3;
|
|
503
|
+
* console.log(copy.length); // 2;
|
|
1033
504
|
*/
|
|
1034
505
|
clone(): this;
|
|
1035
506
|
/**
|
|
@@ -1038,63 +509,21 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
1038
509
|
* @param callback - Predicate (value, index, list) → boolean to keep value.
|
|
1039
510
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
1040
511
|
* @returns A new list with kept values.
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
* @example
|
|
1084
|
-
* // SinglyLinkedList filter and map operations
|
|
1085
|
-
* const list = new SinglyLinkedList<number>([1, 2, 3, 4, 5]);
|
|
1086
|
-
*
|
|
1087
|
-
* // Filter even numbers
|
|
1088
|
-
* const filtered = list.filter(value => value % 2 === 0);
|
|
1089
|
-
* console.log(filtered.length); // 2;
|
|
1090
|
-
*
|
|
1091
|
-
* // Map to double values
|
|
1092
|
-
* const doubled = list.map(value => value * 2);
|
|
1093
|
-
* console.log(doubled.length); // 5;
|
|
1094
|
-
*
|
|
1095
|
-
* // Use reduce to sum
|
|
1096
|
-
* const sum = list.reduce((acc, value) => acc + value, 0);
|
|
1097
|
-
* console.log(sum); // 15;
|
|
512
|
+
* @example
|
|
513
|
+
* // SinglyLinkedList filter and map operations
|
|
514
|
+
* const list = new SinglyLinkedList<number>([1, 2, 3, 4, 5]);
|
|
515
|
+
*
|
|
516
|
+
* // Filter even numbers
|
|
517
|
+
* const filtered = list.filter(value => value % 2 === 0);
|
|
518
|
+
* console.log(filtered.length); // 2;
|
|
519
|
+
*
|
|
520
|
+
* // Map to double values
|
|
521
|
+
* const doubled = list.map(value => value * 2);
|
|
522
|
+
* console.log(doubled.length); // 5;
|
|
523
|
+
*
|
|
524
|
+
* // Use reduce to sum
|
|
525
|
+
* const sum = list.reduce((acc, value) => acc + value, 0);
|
|
526
|
+
* console.log(sum); // 15;
|
|
1098
527
|
*/
|
|
1099
528
|
filter(callback: ElementCallback<E, R, boolean>, thisArg?: unknown): this;
|
|
1100
529
|
/**
|
|
@@ -1114,55 +543,14 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
1114
543
|
* @param [options] - Options for the output list (e.g., maxLen, toElementFn).
|
|
1115
544
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
1116
545
|
* @returns A new SinglyLinkedList with mapped values.
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
* @example
|
|
1160
|
-
* // Transform elements
|
|
1161
|
-
* const list = new SinglyLinkedList<number>([1, 2, 3]);
|
|
1162
|
-
* const doubled = list.map(n => n * 2);
|
|
1163
|
-
* console.log([...doubled]); // [2, 4, 6];
|
|
546
|
+
* @example
|
|
547
|
+
* // Transform elements
|
|
548
|
+
* const list = new SinglyLinkedList<number>([1, 2, 3]);
|
|
549
|
+
* const doubled = list.map(n => n * 2);
|
|
550
|
+
* console.log([...doubled]); // [2, 4, 6];
|
|
1164
551
|
*/
|
|
1165
552
|
map<EM, RM = any>(callback: ElementCallback<E, R, EM>, options?: SinglyLinkedListOptions<EM, RM>, thisArg?: unknown): SinglyLinkedList<EM, RM>;
|
|
553
|
+
protected _equals: (a: E, b: E) => boolean;
|
|
1166
554
|
/**
|
|
1167
555
|
* (Protected) Create a node from a value.
|
|
1168
556
|
* @remarks Time O(1), Space O(1)
|