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
@@ -184,6 +184,35 @@ var IterableElementBase = class {
184
184
  for (const ele of this) if (ele === element) return true;
185
185
  return false;
186
186
  }
187
+ /**
188
+ * Check whether a value exists (Array-compatible alias for `has`).
189
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
190
+ * @param element - Element to search for (uses `===`).
191
+ * @returns `true` if found.
192
+ */
193
+ includes(element) {
194
+ return this.has(element);
195
+ }
196
+ /**
197
+ * Return an iterator of `[index, value]` pairs (Array-compatible).
198
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
199
+ */
200
+ *entries() {
201
+ let index = 0;
202
+ for (const value of this) {
203
+ yield [index++, value];
204
+ }
205
+ }
206
+ /**
207
+ * Return an iterator of numeric indices (Array-compatible).
208
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
209
+ */
210
+ *keys() {
211
+ let index = 0;
212
+ for (const _ of this) {
213
+ yield index++;
214
+ }
215
+ }
187
216
  /**
188
217
  * Reduces all elements to a single accumulated value.
189
218
  *
@@ -494,6 +523,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
494
523
  }
495
524
  return this;
496
525
  }
526
+ /**
527
+ * Return a new instance of the same type with elements in reverse order (non-mutating).
528
+ * @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
529
+ * @returns A new reversed instance.
530
+ */
531
+ toReversed() {
532
+ const cloned = this.clone();
533
+ cloned.reverse();
534
+ return cloned;
535
+ }
497
536
  };
498
537
  var LinearLinkedBase = class extends LinearBase {
499
538
  static {
@@ -785,6 +824,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
785
824
 
786
825
 
787
826
 
827
+
828
+
829
+
830
+
831
+
832
+
833
+
788
834
 
789
835
 
790
836
 
@@ -852,6 +898,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
852
898
 
853
899
 
854
900
 
901
+
902
+
903
+
904
+
905
+
906
+
907
+
855
908
 
856
909
 
857
910
 
@@ -924,6 +977,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
924
977
 
925
978
 
926
979
 
980
+
981
+
982
+
983
+
984
+
985
+
986
+
927
987
 
928
988
 
929
989
 
@@ -978,6 +1038,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
978
1038
 
979
1039
 
980
1040
 
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
981
1048
 
982
1049
 
983
1050
 
@@ -1093,6 +1160,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1093
1160
 
1094
1161
 
1095
1162
 
1163
+
1164
+
1165
+
1166
+
1167
+
1168
+
1169
+
1096
1170
 
1097
1171
 
1098
1172
 
@@ -1152,6 +1226,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1152
1226
 
1153
1227
 
1154
1228
 
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1155
1236
 
1156
1237
 
1157
1238
 
@@ -1200,6 +1281,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1200
1281
 
1201
1282
 
1202
1283
 
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1203
1291
 
1204
1292
 
1205
1293
 
@@ -1254,6 +1342,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1254
1342
 
1255
1343
 
1256
1344
 
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1257
1352
 
1258
1353
 
1259
1354
 
@@ -1313,6 +1408,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1313
1408
 
1314
1409
 
1315
1410
 
1411
+
1412
+
1413
+
1414
+
1415
+
1416
+
1417
+
1316
1418
 
1317
1419
 
1318
1420
 
@@ -1380,6 +1482,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1380
1482
 
1381
1483
 
1382
1484
 
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1383
1492
 
1384
1493
 
1385
1494
 
@@ -1424,6 +1533,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1424
1533
 
1425
1534
 
1426
1535
 
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1427
1543
 
1428
1544
 
1429
1545
 
@@ -1474,6 +1590,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1474
1590
 
1475
1591
 
1476
1592
 
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1477
1600
 
1478
1601
 
1479
1602
 
@@ -1690,6 +1813,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1690
1813
 
1691
1814
 
1692
1815
 
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1693
1823
 
1694
1824
 
1695
1825
 
@@ -1744,6 +1874,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1744
1874
 
1745
1875
 
1746
1876
 
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1747
1884
 
1748
1885
 
1749
1886
 
@@ -1826,6 +1963,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
1826
1963
 
1827
1964
 
1828
1965
 
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1829
1973
 
1830
1974
 
1831
1975
 
@@ -2146,6 +2290,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2146
2290
 
2147
2291
 
2148
2292
 
2293
+
2294
+
2295
+
2296
+
2297
+
2298
+
2299
+
2149
2300
 
2150
2301
 
2151
2302
 
@@ -2215,6 +2366,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2215
2366
 
2216
2367
 
2217
2368
 
2369
+
2370
+
2371
+
2372
+
2373
+
2374
+
2375
+
2218
2376
 
2219
2377
 
2220
2378
 
@@ -2283,6 +2441,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2283
2441
 
2284
2442
 
2285
2443
 
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+
2450
+
2286
2451
 
2287
2452
 
2288
2453
 
@@ -2342,6 +2507,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2342
2507
 
2343
2508
 
2344
2509
 
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+
2516
+
2345
2517
 
2346
2518
 
2347
2519
 
@@ -2430,6 +2602,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2430
2602
 
2431
2603
 
2432
2604
 
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2433
2612
 
2434
2613
 
2435
2614
 
@@ -2479,6 +2658,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2479
2658
 
2480
2659
 
2481
2660
 
2661
+
2662
+
2663
+
2664
+
2665
+
2666
+
2667
+
2482
2668
 
2483
2669
 
2484
2670
 
@@ -2559,6 +2745,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2559
2745
 
2560
2746
 
2561
2747
 
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2562
2755
 
2563
2756
 
2564
2757
 
@@ -2667,6 +2860,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2667
2860
 
2668
2861
 
2669
2862
 
2863
+
2864
+
2865
+
2866
+
2867
+
2868
+
2869
+
2670
2870
 
2671
2871
 
2672
2872
 
@@ -2722,6 +2922,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2722
2922
 
2723
2923
 
2724
2924
 
2925
+
2926
+
2927
+
2928
+
2929
+
2930
+
2931
+
2725
2932
 
2726
2933
 
2727
2934
 
@@ -2779,6 +2986,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2779
2986
 
2780
2987
 
2781
2988
 
2989
+
2990
+
2991
+
2992
+
2993
+
2994
+
2995
+
2782
2996
 
2783
2997
 
2784
2998
 
@@ -2823,6 +3037,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2823
3037
 
2824
3038
 
2825
3039
 
3040
+
3041
+
3042
+
3043
+
3044
+
3045
+
3046
+
2826
3047
 
2827
3048
 
2828
3049
 
@@ -2871,6 +3092,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2871
3092
 
2872
3093
 
2873
3094
 
3095
+
3096
+
3097
+
3098
+
3099
+
3100
+
3101
+
2874
3102
 
2875
3103
 
2876
3104
 
@@ -2926,6 +3154,10 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2926
3154
 
2927
3155
 
2928
3156
 
3157
+
3158
+
3159
+
3160
+
2929
3161
 
2930
3162
 
2931
3163
 
@@ -2934,11 +3166,31 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2934
3166
  * @example
2935
3167
  * // Find value scanning from tail
2936
3168
  * const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
2937
- * // getBackward scans from tail to head, returns first match
2938
- * const found = list.getBackward(node => node.value < 4);
3169
+ * // findLast scans from tail to head, returns first match
3170
+ * const found = list.findLast(node => node.value < 4);
2939
3171
  * console.log(found); // 3;
2940
3172
  */
3173
+ /**
3174
+ * @deprecated Use `findLast` instead. Will be removed in a future major version.
3175
+ */
2941
3176
  getBackward(elementNodeOrPredicate) {
3177
+ return this.findLast(elementNodeOrPredicate);
3178
+ }
3179
+ /**
3180
+ * Find the first value matching a predicate scanning backward (tail → head).
3181
+ * @remarks Time O(N), Space O(1)
3182
+ * @param elementNodeOrPredicate - Element, node, or predicate to match.
3183
+ * @returns Matching value or undefined.
3184
+
3185
+
3186
+ * @example
3187
+ * // Find value scanning from tail
3188
+ * const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
3189
+ * // findLast scans from tail to head, returns first match
3190
+ * const found = list.findLast(node => node.value < 4);
3191
+ * console.log(found); // 3;
3192
+ */
3193
+ findLast(elementNodeOrPredicate) {
2942
3194
  const predicate = this._ensurePredicate(elementNodeOrPredicate);
2943
3195
  let current = this.tail;
2944
3196
  while (current) {
@@ -2947,6 +3199,22 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2947
3199
  }
2948
3200
  return void 0;
2949
3201
  }
3202
+ /**
3203
+ * Find the index of the last value matching a predicate (scans tail → head).
3204
+ * @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
3205
+ * @param predicate - Function called with (value, index, list).
3206
+ * @returns Matching index, or -1 if not found.
3207
+ */
3208
+ findLastIndex(predicate) {
3209
+ let current = this.tail;
3210
+ let index = this.length - 1;
3211
+ while (current) {
3212
+ if (predicate(current.value, index, this)) return index;
3213
+ current = current.prev;
3214
+ index--;
3215
+ }
3216
+ return -1;
3217
+ }
2950
3218
  /**
2951
3219
  * Reverse the list in place.
2952
3220
  * @remarks Time O(N), Space O(1)
@@ -2978,6 +3246,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
2978
3246
 
2979
3247
 
2980
3248
 
3249
+
3250
+
3251
+
3252
+
3253
+
3254
+
3255
+
2981
3256
 
2982
3257
 
2983
3258
 
@@ -3002,6 +3277,25 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3002
3277
  }
3003
3278
  return this;
3004
3279
  }
3280
+ /**
3281
+ * Delete the first element that satisfies a predicate.
3282
+ * @remarks Time O(N), Space O(1)
3283
+ * @param predicate - Function (value, index, list) → boolean to decide deletion.
3284
+ * @returns True if a match was removed.
3285
+ */
3286
+ deleteWhere(predicate) {
3287
+ let current = this.head;
3288
+ let index = 0;
3289
+ while (current) {
3290
+ if (predicate(current.value, index, this)) {
3291
+ this.delete(current);
3292
+ return true;
3293
+ }
3294
+ current = current.next;
3295
+ index++;
3296
+ }
3297
+ return false;
3298
+ }
3005
3299
  /**
3006
3300
  * Set the equality comparator used to compare values.
3007
3301
  * @remarks Time O(1), Space O(1)
@@ -3041,6 +3335,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3041
3335
 
3042
3336
 
3043
3337
 
3338
+
3339
+
3340
+
3341
+
3342
+
3343
+
3344
+
3044
3345
 
3045
3346
 
3046
3347
 
@@ -3094,6 +3395,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3094
3395
 
3095
3396
 
3096
3397
 
3398
+
3399
+
3400
+
3401
+
3402
+
3403
+
3404
+
3097
3405
 
3098
3406
 
3099
3407
 
@@ -3166,6 +3474,13 @@ var DoublyLinkedList = class extends LinearLinkedBase {
3166
3474
 
3167
3475
 
3168
3476
 
3477
+
3478
+
3479
+
3480
+
3481
+
3482
+
3483
+
3169
3484
 
3170
3485
 
3171
3486
 
@@ -3569,6 +3884,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3569
3884
 
3570
3885
 
3571
3886
 
3887
+
3888
+
3889
+
3890
+
3891
+
3892
+
3893
+
3572
3894
 
3573
3895
 
3574
3896
 
@@ -3611,6 +3933,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3611
3933
 
3612
3934
 
3613
3935
 
3936
+
3937
+
3938
+
3939
+
3940
+
3941
+
3942
+
3614
3943
 
3615
3944
 
3616
3945
 
@@ -3656,6 +3985,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3656
3985
 
3657
3986
 
3658
3987
 
3988
+
3989
+
3990
+
3991
+
3992
+
3993
+
3994
+
3659
3995
 
3660
3996
 
3661
3997
 
@@ -3709,6 +4045,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3709
4045
 
3710
4046
 
3711
4047
 
4048
+
4049
+
4050
+
4051
+
4052
+
4053
+
4054
+
3712
4055
 
3713
4056
 
3714
4057
 
@@ -3787,6 +4130,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3787
4130
 
3788
4131
 
3789
4132
 
4133
+
4134
+
4135
+
4136
+
4137
+
4138
+
4139
+
3790
4140
 
3791
4141
 
3792
4142
 
@@ -3850,6 +4200,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3850
4200
 
3851
4201
 
3852
4202
 
4203
+
4204
+
4205
+
4206
+
4207
+
4208
+
4209
+
3853
4210
 
3854
4211
 
3855
4212
 
@@ -3896,6 +4253,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3896
4253
 
3897
4254
 
3898
4255
 
4256
+
4257
+
4258
+
4259
+
4260
+
4261
+
4262
+
3899
4263
 
3900
4264
 
3901
4265
 
@@ -3962,6 +4326,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
3962
4326
 
3963
4327
 
3964
4328
 
4329
+
4330
+
4331
+
4332
+
4333
+
4334
+
4335
+
3965
4336
 
3966
4337
 
3967
4338
 
@@ -4008,6 +4379,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4008
4379
 
4009
4380
 
4010
4381
 
4382
+
4383
+
4384
+
4385
+
4386
+
4387
+
4388
+
4011
4389
 
4012
4390
 
4013
4391
 
@@ -4056,6 +4434,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4056
4434
 
4057
4435
 
4058
4436
 
4437
+
4438
+
4439
+
4440
+
4441
+
4442
+
4443
+
4059
4444
 
4060
4445
 
4061
4446
 
@@ -4102,6 +4487,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4102
4487
 
4103
4488
 
4104
4489
 
4490
+
4491
+
4492
+
4493
+
4494
+
4495
+
4496
+
4105
4497
 
4106
4498
 
4107
4499
 
@@ -4151,6 +4543,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4151
4543
 
4152
4544
 
4153
4545
 
4546
+
4547
+
4548
+
4549
+
4550
+
4551
+
4552
+
4154
4553
 
4155
4554
 
4156
4555
 
@@ -4205,6 +4604,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4205
4604
 
4206
4605
 
4207
4606
 
4607
+
4608
+
4609
+
4610
+
4611
+
4612
+
4613
+
4208
4614
 
4209
4615
 
4210
4616
 
@@ -4257,6 +4663,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4257
4663
 
4258
4664
 
4259
4665
 
4666
+
4667
+
4668
+
4669
+
4670
+
4671
+
4672
+
4260
4673
 
4261
4674
 
4262
4675
 
@@ -4308,6 +4721,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4308
4721
 
4309
4722
 
4310
4723
 
4724
+
4725
+
4726
+
4727
+
4728
+
4729
+
4730
+
4311
4731
 
4312
4732
 
4313
4733
 
@@ -4365,6 +4785,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4365
4785
 
4366
4786
 
4367
4787
 
4788
+
4789
+
4790
+
4791
+
4792
+
4793
+
4794
+
4368
4795
 
4369
4796
 
4370
4797
 
@@ -4430,6 +4857,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4430
4857
 
4431
4858
 
4432
4859
 
4860
+
4861
+
4862
+
4863
+
4864
+
4865
+
4866
+
4433
4867
 
4434
4868
 
4435
4869
 
@@ -4479,6 +4913,13 @@ var SkipList = class _SkipList extends IterableEntryBase {
4479
4913
 
4480
4914
 
4481
4915
 
4916
+
4917
+
4918
+
4919
+
4920
+
4921
+
4922
+
4482
4923
 
4483
4924
 
4484
4925