data-structure-typed 2.5.2 → 2.6.0

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.
Files changed (162) hide show
  1. package/.husky/pre-commit +3 -0
  2. package/CHANGELOG.md +3 -1
  3. package/MIGRATION.md +217 -0
  4. package/README.md +80 -8
  5. package/README_CN.md +569 -143
  6. package/SPECIFICATION.md +44 -14
  7. package/SPECIFICATION.zh-CN.md +44 -14
  8. package/dist/cjs/binary-tree.cjs +5841 -1678
  9. package/dist/cjs/graph.cjs +422 -14
  10. package/dist/cjs/hash.cjs +95 -7
  11. package/dist/cjs/heap.cjs +174 -16
  12. package/dist/cjs/index.cjs +7751 -2449
  13. package/dist/cjs/linked-list.cjs +443 -2
  14. package/dist/cjs/matrix.cjs +56 -0
  15. package/dist/cjs/priority-queue.cjs +172 -14
  16. package/dist/cjs/queue.cjs +435 -0
  17. package/dist/cjs/stack.cjs +103 -4
  18. package/dist/cjs/trie.cjs +106 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +5933 -1772
  20. package/dist/cjs-legacy/graph.cjs +422 -14
  21. package/dist/cjs-legacy/hash.cjs +95 -7
  22. package/dist/cjs-legacy/heap.cjs +174 -16
  23. package/dist/cjs-legacy/index.cjs +8154 -2854
  24. package/dist/cjs-legacy/linked-list.cjs +443 -2
  25. package/dist/cjs-legacy/matrix.cjs +56 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +172 -14
  27. package/dist/cjs-legacy/queue.cjs +435 -0
  28. package/dist/cjs-legacy/stack.cjs +103 -4
  29. package/dist/cjs-legacy/trie.cjs +106 -0
  30. package/dist/esm/binary-tree.mjs +5841 -1678
  31. package/dist/esm/graph.mjs +422 -14
  32. package/dist/esm/hash.mjs +95 -7
  33. package/dist/esm/heap.mjs +174 -16
  34. package/dist/esm/index.mjs +7751 -2449
  35. package/dist/esm/linked-list.mjs +443 -2
  36. package/dist/esm/matrix.mjs +56 -0
  37. package/dist/esm/priority-queue.mjs +172 -14
  38. package/dist/esm/queue.mjs +435 -0
  39. package/dist/esm/stack.mjs +103 -4
  40. package/dist/esm/trie.mjs +106 -0
  41. package/dist/esm-legacy/binary-tree.mjs +5933 -1772
  42. package/dist/esm-legacy/graph.mjs +422 -14
  43. package/dist/esm-legacy/hash.mjs +95 -7
  44. package/dist/esm-legacy/heap.mjs +174 -16
  45. package/dist/esm-legacy/index.mjs +8154 -2854
  46. package/dist/esm-legacy/linked-list.mjs +443 -2
  47. package/dist/esm-legacy/matrix.mjs +56 -0
  48. package/dist/esm-legacy/priority-queue.mjs +172 -14
  49. package/dist/esm-legacy/queue.mjs +435 -0
  50. package/dist/esm-legacy/stack.mjs +103 -4
  51. package/dist/esm-legacy/trie.mjs +106 -0
  52. package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
  53. package/dist/types/data-structures/base/linear-base.d.ts +6 -0
  54. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +86 -2
  55. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
  56. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
  57. package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
  58. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
  59. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
  60. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
  61. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
  62. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
  63. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
  64. package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
  65. package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
  66. package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
  67. package/dist/types/data-structures/heap/heap.d.ts +140 -12
  68. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
  69. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
  70. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
  71. package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
  72. package/dist/types/data-structures/queue/deque.d.ts +171 -0
  73. package/dist/types/data-structures/queue/queue.d.ts +97 -0
  74. package/dist/types/data-structures/stack/stack.d.ts +72 -2
  75. package/dist/types/data-structures/trie/trie.d.ts +84 -0
  76. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  77. package/dist/umd/data-structure-typed.js +7784 -2484
  78. package/dist/umd/data-structure-typed.min.js +4 -4
  79. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +188 -200
  80. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
  81. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +62 -62
  82. package/docs-site-docusaurus/docs/api/classes/BST.md +183 -195
  83. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
  85. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +143 -155
  86. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  87. package/docs-site-docusaurus/docs/api/classes/Deque.md +99 -85
  88. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +73 -73
  89. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +100 -70
  90. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
  91. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
  92. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  93. package/docs-site-docusaurus/docs/api/classes/HashMap.md +38 -38
  94. package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
  95. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
  96. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +23 -23
  97. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +48 -48
  98. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +52 -52
  99. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +46 -42
  100. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
  101. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +74 -74
  102. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +73 -73
  103. package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
  104. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
  105. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
  106. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
  107. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
  108. package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
  109. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
  110. package/docs-site-docusaurus/docs/api/classes/Queue.md +111 -59
  111. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +200 -212
  112. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
  113. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +75 -75
  114. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
  115. package/docs-site-docusaurus/docs/api/classes/SkipList.md +37 -37
  116. package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
  117. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +107 -36
  118. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +43 -43
  119. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +106 -35
  120. package/docs-site-docusaurus/docs/api/classes/Trie.md +43 -43
  121. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  122. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +72 -72
  123. package/docs-site-docusaurus/docs/guide/architecture.md +75 -7
  124. package/docs-site-docusaurus/docs/guide/concepts.md +53 -34
  125. package/docs-site-docusaurus/docs/guide/faq.md +53 -0
  126. package/docs-site-docusaurus/docs/guide/guides.md +8 -9
  127. package/docs-site-docusaurus/docs/guide/integrations.md +74 -177
  128. package/docs-site-docusaurus/docs/guide/overview.md +131 -17
  129. package/docs-site-docusaurus/src/pages/index.tsx +4 -0
  130. package/docs-site-docusaurus/typedoc.json +1 -0
  131. package/jest.integration.config.js +1 -2
  132. package/package.json +10 -7
  133. package/src/data-structures/base/iterable-element-base.ts +32 -0
  134. package/src/data-structures/base/linear-base.ts +11 -0
  135. package/src/data-structures/binary-tree/avl-tree.ts +88 -5
  136. package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
  137. package/src/data-structures/binary-tree/binary-tree.ts +242 -81
  138. package/src/data-structures/binary-tree/bst.ts +173 -7
  139. package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
  140. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  141. package/src/data-structures/binary-tree/tree-map.ts +948 -36
  142. package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
  143. package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
  144. package/src/data-structures/binary-tree/tree-set.ts +1260 -251
  145. package/src/data-structures/graph/directed-graph.ts +71 -1
  146. package/src/data-structures/graph/undirected-graph.ts +64 -1
  147. package/src/data-structures/hash/hash-map.ts +100 -12
  148. package/src/data-structures/heap/heap.ts +149 -19
  149. package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
  150. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  151. package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
  152. package/src/data-structures/matrix/matrix.ts +56 -0
  153. package/src/data-structures/queue/deque.ts +187 -0
  154. package/src/data-structures/queue/queue.ts +109 -0
  155. package/src/data-structures/stack/stack.ts +75 -5
  156. package/src/data-structures/trie/trie.ts +84 -0
  157. package/src/interfaces/binary-tree.ts +1 -9
  158. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
  159. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
  160. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
  161. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
  162. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
@@ -186,6 +186,35 @@ var IterableElementBase = class {
186
186
  for (const ele of this) if (ele === element) return true;
187
187
  return false;
188
188
  }
189
+ /**
190
+ * Check whether a value exists (Array-compatible alias for `has`).
191
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
192
+ * @param element - Element to search for (uses `===`).
193
+ * @returns `true` if found.
194
+ */
195
+ includes(element) {
196
+ return this.has(element);
197
+ }
198
+ /**
199
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
200
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
201
+ */
202
+ *entries() {
203
+ let index = 0;
204
+ for (const value of this) {
205
+ yield [index++, value];
206
+ }
207
+ }
208
+ /**
209
+ * Return an iterator of numeric indices (Array-compatible).
210
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
211
+ */
212
+ *keys() {
213
+ let index = 0;
214
+ for (const _ of this) {
215
+ yield index++;
216
+ }
217
+ }
189
218
  /**
190
219
  * Reduces all elements to a single accumulated value.
191
220
  *
@@ -496,6 +525,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
496
525
  }
497
526
  return this;
498
527
  }
528
+ /**
529
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
530
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
531
+ * @returns A new reversed instance.
532
+ */
533
+ toReversed() {
534
+ const cloned = this.clone();
535
+ cloned.reverse();
536
+ return cloned;
537
+ }
499
538
  };
500
539
  var LinearLinkedBase = class extends LinearBase {
501
540
  static {
@@ -787,6 +826,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
787
826
 
788
827
 
789
828
 
829
+
830
+
831
+
832
+
833
+
834
+
835
+
790
836
 
791
837
 
792
838
 
@@ -854,6 +900,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
854
900
 
855
901
 
856
902
 
903
+
904
+
905
+
906
+
907
+
908
+
909
+
857
910
 
858
911
 
859
912
 
@@ -926,6 +979,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
926
979
 
927
980
 
928
981
 
982
+
983
+
984
+
985
+
986
+
987
+
988
+
929
989
 
930
990
 
931
991
 
@@ -980,6 +1040,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
980
1040
 
981
1041
 
982
1042
 
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
983
1050
 
984
1051
 
985
1052
 
@@ -1095,6 +1162,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1095
1162
 
1096
1163
 
1097
1164
 
1165
+
1166
+
1167
+
1168
+
1169
+
1170
+
1171
+
1098
1172
 
1099
1173
 
1100
1174
 
@@ -1154,6 +1228,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1154
1228
 
1155
1229
 
1156
1230
 
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1157
1238
 
1158
1239
 
1159
1240
 
@@ -1202,6 +1283,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1202
1283
 
1203
1284
 
1204
1285
 
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1205
1293
 
1206
1294
 
1207
1295
 
@@ -1256,6 +1344,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1256
1344
 
1257
1345
 
1258
1346
 
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1259
1354
 
1260
1355
 
1261
1356
 
@@ -1315,6 +1410,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1315
1410
 
1316
1411
 
1317
1412
 
1413
+
1414
+
1415
+
1416
+
1417
+
1418
+
1419
+
1318
1420
 
1319
1421
 
1320
1422
 
@@ -1382,6 +1484,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1382
1484
 
1383
1485
 
1384
1486
 
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1385
1494
 
1386
1495
 
1387
1496
 
@@ -1426,6 +1535,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1426
1535
 
1427
1536
 
1428
1537
 
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1429
1545
 
1430
1546
 
1431
1547
 
@@ -1476,6 +1592,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1476
1592
 
1477
1593
 
1478
1594
 
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1479
1602
 
1480
1603
 
1481
1604
 
@@ -1692,6 +1815,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1692
1815
 
1693
1816
 
1694
1817
 
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1695
1825
 
1696
1826
 
1697
1827
 
@@ -1746,6 +1876,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1746
1876
 
1747
1877
 
1748
1878
 
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1749
1886
 
1750
1887
 
1751
1888
 
@@ -1828,6 +1965,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1828
1965
 
1829
1966
 
1830
1967
 
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1831
1975
 
1832
1976
 
1833
1977
 
@@ -2148,6 +2292,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2148
2292
 
2149
2293
 
2150
2294
 
2295
+
2296
+
2297
+
2298
+
2299
+
2300
+
2301
+
2151
2302
 
2152
2303
 
2153
2304
 
@@ -2217,6 +2368,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2217
2368
 
2218
2369
 
2219
2370
 
2371
+
2372
+
2373
+
2374
+
2375
+
2376
+
2377
+
2220
2378
 
2221
2379
 
2222
2380
 
@@ -2285,6 +2443,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2285
2443
 
2286
2444
 
2287
2445
 
2446
+
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2288
2453
 
2289
2454
 
2290
2455
 
@@ -2344,6 +2509,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2344
2509
 
2345
2510
 
2346
2511
 
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2347
2519
 
2348
2520
 
2349
2521
 
@@ -2432,6 +2604,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2432
2604
 
2433
2605
 
2434
2606
 
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2435
2614
 
2436
2615
 
2437
2616
 
@@ -2481,6 +2660,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2481
2660
 
2482
2661
 
2483
2662
 
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2484
2670
 
2485
2671
 
2486
2672
 
@@ -2561,6 +2747,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2561
2747
 
2562
2748
 
2563
2749
 
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2564
2757
 
2565
2758
 
2566
2759
 
@@ -2669,6 +2862,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2669
2862
 
2670
2863
 
2671
2864
 
2865
+
2866
+
2867
+
2868
+
2869
+
2870
+
2871
+
2672
2872
 
2673
2873
 
2674
2874
 
@@ -2724,6 +2924,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2724
2924
 
2725
2925
 
2726
2926
 
2927
+
2928
+
2929
+
2930
+
2931
+
2932
+
2933
+
2727
2934
 
2728
2935
 
2729
2936
 
@@ -2781,6 +2988,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2781
2988
 
2782
2989
 
2783
2990
 
2991
+
2992
+
2993
+
2994
+
2995
+
2996
+
2997
+
2784
2998
 
2785
2999
 
2786
3000
 
@@ -2825,6 +3039,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2825
3039
 
2826
3040
 
2827
3041
 
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+
3048
+
2828
3049
 
2829
3050
 
2830
3051
 
@@ -2873,6 +3094,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2873
3094
 
2874
3095
 
2875
3096
 
3097
+
3098
+
3099
+
3100
+
3101
+
3102
+
3103
+
2876
3104
 
2877
3105
 
2878
3106
 
@@ -2928,6 +3156,10 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2928
3156
 
2929
3157
 
2930
3158
 
3159
+
3160
+
3161
+
3162
+
2931
3163
 
2932
3164
 
2933
3165
 
@@ -2936,11 +3168,31 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2936
3168
  * @example
2937
3169
  * // Find value scanning from tail
2938
3170
  * const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
2939
- * // getBackward scans from tail to head, returns first match
2940
- * const found = list.getBackward(node => node.value < 4);
3171
+ * // findLast scans from tail to head, returns first match
3172
+ * const found = list.findLast(node => node.value < 4);
2941
3173
  * console.log(found); // 3;
2942
3174
  */
3175
+ /**
3176
+ * @deprecated Use `findLast` instead. Will be removed in a future major version.
3177
+ */
2943
3178
  getBackward(elementNodeOrPredicate) {
3179
+ return this.findLast(elementNodeOrPredicate);
3180
+ }
3181
+ /**
3182
+ * Find the first value matching a predicate scanning backward (tail → head).
3183
+ * @remarks Time O(N), Space O(1)
3184
+ * @param elementNodeOrPredicate - Element, node, or predicate to match.
3185
+ * @returns Matching value or undefined.
3186
+
3187
+
3188
+ * @example
3189
+ * // Find value scanning from tail
3190
+ * const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
3191
+ * // findLast scans from tail to head, returns first match
3192
+ * const found = list.findLast(node => node.value < 4);
3193
+ * console.log(found); // 3;
3194
+ */
3195
+ findLast(elementNodeOrPredicate) {
2944
3196
  const predicate = this._ensurePredicate(elementNodeOrPredicate);
2945
3197
  let current = this.tail;
2946
3198
  while (current) {
@@ -2949,6 +3201,22 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2949
3201
  }
2950
3202
  return void 0;
2951
3203
  }
3204
+ /**
3205
+ * Find the index of the last value matching a predicate (scans tail → head).
3206
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
3207
+ * @param predicate - Function called with (value, index, list).
3208
+ * @returns Matching index, or -1 if not found.
3209
+ */
3210
+ findLastIndex(predicate) {
3211
+ let current = this.tail;
3212
+ let index = this.length - 1;
3213
+ while (current) {
3214
+ if (predicate(current.value, index, this)) return index;
3215
+ current = current.prev;
3216
+ index--;
3217
+ }
3218
+ return -1;
3219
+ }
2952
3220
  /**
2953
3221
  * Reverse the list in place.
2954
3222
  * @remarks Time O(N), Space O(1)
@@ -2980,6 +3248,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2980
3248
 
2981
3249
 
2982
3250
 
3251
+
3252
+
3253
+
3254
+
3255
+
3256
+
3257
+
2983
3258
 
2984
3259
 
2985
3260
 
@@ -3004,6 +3279,25 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3004
3279
  }
3005
3280
  return this;
3006
3281
  }
3282
+ /**
3283
+ * Delete the first element that satisfies a predicate.
3284
+ * @remarks Time O(N), Space O(1)
3285
+ * @param predicate - Function (value, index, list) → boolean to decide deletion.
3286
+ * @returns True if a match was removed.
3287
+ */
3288
+ deleteWhere(predicate) {
3289
+ let current = this.head;
3290
+ let index = 0;
3291
+ while (current) {
3292
+ if (predicate(current.value, index, this)) {
3293
+ this.delete(current);
3294
+ return true;
3295
+ }
3296
+ current = current.next;
3297
+ index++;
3298
+ }
3299
+ return false;
3300
+ }
3007
3301
  /**
3008
3302
  * Set the equality comparator used to compare values.
3009
3303
  * @remarks Time O(1), Space O(1)
@@ -3043,6 +3337,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3043
3337
 
3044
3338
 
3045
3339
 
3340
+
3341
+
3342
+
3343
+
3344
+
3345
+
3346
+
3046
3347
 
3047
3348
 
3048
3349
 
@@ -3096,6 +3397,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3096
3397
 
3097
3398
 
3098
3399
 
3400
+
3401
+
3402
+
3403
+
3404
+
3405
+
3406
+
3099
3407
 
3100
3408
 
3101
3409
 
@@ -3168,6 +3476,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3168
3476
 
3169
3477
 
3170
3478
 
3479
+
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3171
3486
 
3172
3487
 
3173
3488
 
@@ -3571,6 +3886,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3571
3886
 
3572
3887
 
3573
3888
 
3889
+
3890
+
3891
+
3892
+
3893
+
3894
+
3895
+
3574
3896
 
3575
3897
 
3576
3898
 
@@ -3613,6 +3935,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3613
3935
 
3614
3936
 
3615
3937
 
3938
+
3939
+
3940
+
3941
+
3942
+
3943
+
3944
+
3616
3945
 
3617
3946
 
3618
3947
 
@@ -3658,6 +3987,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3658
3987
 
3659
3988
 
3660
3989
 
3990
+
3991
+
3992
+
3993
+
3994
+
3995
+
3996
+
3661
3997
 
3662
3998
 
3663
3999
 
@@ -3711,6 +4047,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3711
4047
 
3712
4048
 
3713
4049
 
4050
+
4051
+
4052
+
4053
+
4054
+
4055
+
4056
+
3714
4057
 
3715
4058
 
3716
4059
 
@@ -3789,6 +4132,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3789
4132
 
3790
4133
 
3791
4134
 
4135
+
4136
+
4137
+
4138
+
4139
+
4140
+
4141
+
3792
4142
 
3793
4143
 
3794
4144
 
@@ -3852,6 +4202,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3852
4202
 
3853
4203
 
3854
4204
 
4205
+
4206
+
4207
+
4208
+
4209
+
4210
+
4211
+
3855
4212
 
3856
4213
 
3857
4214
 
@@ -3898,6 +4255,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3898
4255
 
3899
4256
 
3900
4257
 
4258
+
4259
+
4260
+
4261
+
4262
+
4263
+
4264
+
3901
4265
 
3902
4266
 
3903
4267
 
@@ -3964,6 +4328,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3964
4328
 
3965
4329
 
3966
4330
 
4331
+
4332
+
4333
+
4334
+
4335
+
4336
+
4337
+
3967
4338
 
3968
4339
 
3969
4340
 
@@ -4010,6 +4381,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4010
4381
 
4011
4382
 
4012
4383
 
4384
+
4385
+
4386
+
4387
+
4388
+
4389
+
4390
+
4013
4391
 
4014
4392
 
4015
4393
 
@@ -4058,6 +4436,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4058
4436
 
4059
4437
 
4060
4438
 
4439
+
4440
+
4441
+
4442
+
4443
+
4444
+
4445
+
4061
4446
 
4062
4447
 
4063
4448
 
@@ -4104,6 +4489,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4104
4489
 
4105
4490
 
4106
4491
 
4492
+
4493
+
4494
+
4495
+
4496
+
4497
+
4498
+
4107
4499
 
4108
4500
 
4109
4501
 
@@ -4153,6 +4545,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4153
4545
 
4154
4546
 
4155
4547
 
4548
+
4549
+
4550
+
4551
+
4552
+
4553
+
4554
+
4156
4555
 
4157
4556
 
4158
4557
 
@@ -4207,6 +4606,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4207
4606
 
4208
4607
 
4209
4608
 
4609
+
4610
+
4611
+
4612
+
4613
+
4614
+
4615
+
4210
4616
 
4211
4617
 
4212
4618
 
@@ -4259,6 +4665,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4259
4665
 
4260
4666
 
4261
4667
 
4668
+
4669
+
4670
+
4671
+
4672
+
4673
+
4674
+
4262
4675
 
4263
4676
 
4264
4677
 
@@ -4310,6 +4723,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4310
4723
 
4311
4724
 
4312
4725
 
4726
+
4727
+
4728
+
4729
+
4730
+
4731
+
4732
+
4313
4733
 
4314
4734
 
4315
4735
 
@@ -4367,6 +4787,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4367
4787
 
4368
4788
 
4369
4789
 
4790
+
4791
+
4792
+
4793
+
4794
+
4795
+
4796
+
4370
4797
 
4371
4798
 
4372
4799
 
@@ -4432,6 +4859,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4432
4859
 
4433
4860
 
4434
4861
 
4862
+
4863
+
4864
+
4865
+
4866
+
4867
+
4868
+
4435
4869
 
4436
4870
 
4437
4871
 
@@ -4481,6 +4915,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4481
4915
 
4482
4916
 
4483
4917
 
4918
+
4919
+
4920
+
4921
+
4922
+
4923
+
4924
+
4484
4925
 
4485
4926
 
4486
4927