data-structure-typed 2.5.3 → 2.6.1
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/.github/workflows/ci.yml +7 -2
- package/.github/workflows/release-package.yml +9 -2
- package/.husky/pre-commit +3 -0
- package/CHANGELOG.md +1 -1
- package/MIGRATION.md +48 -0
- package/README.md +20 -2
- package/README_CN.md +20 -2
- package/SPECIFICATION.md +24 -0
- package/SPECIFICATION.zh-CN.md +24 -0
- package/dist/cjs/binary-tree.cjs +1897 -19
- package/dist/cjs/graph.cjs +174 -0
- package/dist/cjs/hash.cjs +33 -0
- package/dist/cjs/heap.cjs +71 -0
- package/dist/cjs/index.cjs +2383 -3
- package/dist/cjs/linked-list.cjs +224 -2
- package/dist/cjs/matrix.cjs +24 -0
- package/dist/cjs/priority-queue.cjs +71 -0
- package/dist/cjs/queue.cjs +221 -1
- package/dist/cjs/stack.cjs +59 -0
- package/dist/cjs/trie.cjs +62 -0
- package/dist/cjs-legacy/binary-tree.cjs +1897 -19
- package/dist/cjs-legacy/graph.cjs +174 -0
- package/dist/cjs-legacy/hash.cjs +33 -0
- package/dist/cjs-legacy/heap.cjs +71 -0
- package/dist/cjs-legacy/index.cjs +2383 -3
- package/dist/cjs-legacy/linked-list.cjs +224 -2
- package/dist/cjs-legacy/matrix.cjs +24 -0
- package/dist/cjs-legacy/priority-queue.cjs +71 -0
- package/dist/cjs-legacy/queue.cjs +221 -1
- package/dist/cjs-legacy/stack.cjs +59 -0
- package/dist/cjs-legacy/trie.cjs +62 -0
- package/dist/esm/binary-tree.mjs +1897 -19
- package/dist/esm/graph.mjs +174 -0
- package/dist/esm/hash.mjs +33 -0
- package/dist/esm/heap.mjs +71 -0
- package/dist/esm/index.mjs +2383 -3
- package/dist/esm/linked-list.mjs +224 -2
- package/dist/esm/matrix.mjs +24 -0
- package/dist/esm/priority-queue.mjs +71 -0
- package/dist/esm/queue.mjs +221 -1
- package/dist/esm/stack.mjs +59 -0
- package/dist/esm/trie.mjs +62 -0
- package/dist/esm-legacy/binary-tree.mjs +1897 -19
- package/dist/esm-legacy/graph.mjs +174 -0
- package/dist/esm-legacy/hash.mjs +33 -0
- package/dist/esm-legacy/heap.mjs +71 -0
- package/dist/esm-legacy/index.mjs +2383 -3
- package/dist/esm-legacy/linked-list.mjs +224 -2
- package/dist/esm-legacy/matrix.mjs +24 -0
- package/dist/esm-legacy/priority-queue.mjs +71 -0
- package/dist/esm-legacy/queue.mjs +221 -1
- package/dist/esm-legacy/stack.mjs +59 -0
- package/dist/esm-legacy/trie.mjs +62 -0
- package/dist/types/data-structures/base/iterable-element-base.d.ts +17 -0
- package/dist/types/data-structures/base/linear-base.d.ts +6 -0
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +36 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +42 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +75 -0
- package/dist/types/data-structures/binary-tree/bst.d.ts +72 -0
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +57 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +18 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +375 -0
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +389 -0
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +330 -0
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +438 -0
- package/dist/types/data-structures/graph/directed-graph.d.ts +30 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +27 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +33 -0
- package/dist/types/data-structures/heap/heap.d.ts +42 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +75 -2
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +45 -0
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +54 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +24 -0
- package/dist/types/data-structures/queue/deque.d.ts +90 -1
- package/dist/types/data-structures/queue/queue.d.ts +36 -0
- package/dist/types/data-structures/stack/stack.d.ts +30 -0
- package/dist/types/data-structures/trie/trie.d.ts +36 -0
- package/dist/umd/data-structure-typed.js +2383 -3
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +108 -108
- package/docs-site-docusaurus/docs/api/classes/BST.md +101 -101
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +66 -66
- package/docs-site-docusaurus/docs/api/classes/Deque.md +235 -51
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +21 -21
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +231 -67
- 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 +14 -14
- package/docs-site-docusaurus/docs/api/classes/Heap.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +83 -13
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +124 -20
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +140 -32
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +30 -26
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +159 -51
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +20 -20
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +23 -23
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +117 -34
- package/docs-site-docusaurus/docs/api/classes/Queue.md +142 -34
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +117 -117
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +158 -50
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +21 -21
- package/docs-site-docusaurus/docs/api/classes/Stack.md +108 -26
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +33 -33
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +75 -39
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +301 -39
- package/docs-site-docusaurus/docs/api/classes/Trie.md +110 -28
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +20 -20
- package/jest.integration.config.js +1 -2
- package/package.json +51 -50
- package/src/common/error.ts +15 -32
- package/src/common/index.ts +0 -3
- package/src/data-structures/base/iterable-element-base.ts +32 -3
- package/src/data-structures/base/linear-base.ts +13 -36
- package/src/data-structures/binary-tree/avl-tree.ts +31 -493
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -530
- package/src/data-structures/binary-tree/binary-tree.ts +326 -1236
- package/src/data-structures/binary-tree/bst.ts +158 -1010
- package/src/data-structures/binary-tree/red-black-tree.ts +451 -1233
- package/src/data-structures/binary-tree/segment-tree.ts +73 -333
- package/src/data-structures/binary-tree/tree-map.ts +462 -4749
- package/src/data-structures/binary-tree/tree-multi-map.ts +310 -4530
- package/src/data-structures/binary-tree/tree-multi-set.ts +300 -3652
- package/src/data-structures/binary-tree/tree-set.ts +437 -4443
- package/src/data-structures/graph/abstract-graph.ts +98 -167
- package/src/data-structures/graph/directed-graph.ts +137 -532
- package/src/data-structures/graph/map-graph.ts +0 -3
- package/src/data-structures/graph/undirected-graph.ts +132 -484
- package/src/data-structures/hash/hash-map.ts +154 -549
- package/src/data-structures/heap/heap.ts +200 -753
- package/src/data-structures/linked-list/doubly-linked-list.ts +153 -809
- package/src/data-structures/linked-list/singly-linked-list.ts +122 -749
- package/src/data-structures/linked-list/skip-linked-list.ts +211 -864
- package/src/data-structures/matrix/matrix.ts +179 -494
- package/src/data-structures/matrix/navigator.ts +0 -1
- package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
- package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
- package/src/data-structures/priority-queue/priority-queue.ts +1 -2
- package/src/data-structures/queue/deque.ts +241 -807
- package/src/data-structures/queue/queue.ts +102 -589
- package/src/data-structures/stack/stack.ts +76 -475
- package/src/data-structures/trie/trie.ts +98 -592
- package/src/types/common.ts +0 -10
- package/src/types/data-structures/binary-tree/bst.ts +0 -7
- package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
- package/src/types/data-structures/graph/abstract-graph.ts +0 -2
- package/src/types/data-structures/hash/hash-map.ts +0 -3
- package/src/types/data-structures/hash/index.ts +0 -1
- package/src/types/data-structures/matrix/navigator.ts +0 -2
- package/src/types/utils/utils.ts +0 -7
- package/src/types/utils/validate-type.ts +0 -7
- package/src/utils/number.ts +0 -2
- package/src/utils/utils.ts +0 -5
package/dist/esm/linked-list.mjs
CHANGED
|
@@ -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 {
|
|
@@ -793,6 +832,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
793
832
|
|
|
794
833
|
|
|
795
834
|
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
796
838
|
|
|
797
839
|
|
|
798
840
|
|
|
@@ -864,6 +906,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
864
906
|
|
|
865
907
|
|
|
866
908
|
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
867
912
|
|
|
868
913
|
|
|
869
914
|
|
|
@@ -940,6 +985,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
940
985
|
|
|
941
986
|
|
|
942
987
|
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
|
|
943
991
|
|
|
944
992
|
|
|
945
993
|
|
|
@@ -998,6 +1046,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
998
1046
|
|
|
999
1047
|
|
|
1000
1048
|
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1001
1052
|
|
|
1002
1053
|
|
|
1003
1054
|
|
|
@@ -1117,6 +1168,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1117
1168
|
|
|
1118
1169
|
|
|
1119
1170
|
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1120
1174
|
|
|
1121
1175
|
|
|
1122
1176
|
|
|
@@ -1180,6 +1234,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1180
1234
|
|
|
1181
1235
|
|
|
1182
1236
|
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
|
|
1183
1240
|
|
|
1184
1241
|
|
|
1185
1242
|
|
|
@@ -1232,6 +1289,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1232
1289
|
|
|
1233
1290
|
|
|
1234
1291
|
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1235
1295
|
|
|
1236
1296
|
|
|
1237
1297
|
|
|
@@ -1290,6 +1350,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1290
1350
|
|
|
1291
1351
|
|
|
1292
1352
|
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1293
1356
|
|
|
1294
1357
|
|
|
1295
1358
|
|
|
@@ -1353,6 +1416,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1353
1416
|
|
|
1354
1417
|
|
|
1355
1418
|
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1356
1422
|
|
|
1357
1423
|
|
|
1358
1424
|
|
|
@@ -1424,6 +1490,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1424
1490
|
|
|
1425
1491
|
|
|
1426
1492
|
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1427
1496
|
|
|
1428
1497
|
|
|
1429
1498
|
|
|
@@ -1472,6 +1541,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1472
1541
|
|
|
1473
1542
|
|
|
1474
1543
|
|
|
1544
|
+
|
|
1545
|
+
|
|
1546
|
+
|
|
1475
1547
|
|
|
1476
1548
|
|
|
1477
1549
|
|
|
@@ -1526,6 +1598,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1526
1598
|
|
|
1527
1599
|
|
|
1528
1600
|
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
|
|
1529
1604
|
|
|
1530
1605
|
|
|
1531
1606
|
|
|
@@ -1746,6 +1821,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1746
1821
|
|
|
1747
1822
|
|
|
1748
1823
|
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
|
|
1749
1827
|
|
|
1750
1828
|
|
|
1751
1829
|
|
|
@@ -1804,6 +1882,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1804
1882
|
|
|
1805
1883
|
|
|
1806
1884
|
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1807
1888
|
|
|
1808
1889
|
|
|
1809
1890
|
|
|
@@ -1890,6 +1971,9 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1890
1971
|
|
|
1891
1972
|
|
|
1892
1973
|
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1893
1977
|
|
|
1894
1978
|
|
|
1895
1979
|
|
|
@@ -2214,6 +2298,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2214
2298
|
|
|
2215
2299
|
|
|
2216
2300
|
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2217
2304
|
|
|
2218
2305
|
|
|
2219
2306
|
|
|
@@ -2287,6 +2374,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2287
2374
|
|
|
2288
2375
|
|
|
2289
2376
|
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2290
2380
|
|
|
2291
2381
|
|
|
2292
2382
|
|
|
@@ -2359,6 +2449,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2359
2449
|
|
|
2360
2450
|
|
|
2361
2451
|
|
|
2452
|
+
|
|
2453
|
+
|
|
2454
|
+
|
|
2362
2455
|
|
|
2363
2456
|
|
|
2364
2457
|
|
|
@@ -2422,6 +2515,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2422
2515
|
|
|
2423
2516
|
|
|
2424
2517
|
|
|
2518
|
+
|
|
2519
|
+
|
|
2520
|
+
|
|
2425
2521
|
|
|
2426
2522
|
|
|
2427
2523
|
|
|
@@ -2514,6 +2610,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2514
2610
|
|
|
2515
2611
|
|
|
2516
2612
|
|
|
2613
|
+
|
|
2614
|
+
|
|
2615
|
+
|
|
2517
2616
|
|
|
2518
2617
|
|
|
2519
2618
|
|
|
@@ -2567,6 +2666,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2567
2666
|
|
|
2568
2667
|
|
|
2569
2668
|
|
|
2669
|
+
|
|
2670
|
+
|
|
2671
|
+
|
|
2570
2672
|
|
|
2571
2673
|
|
|
2572
2674
|
|
|
@@ -2651,6 +2753,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2651
2753
|
|
|
2652
2754
|
|
|
2653
2755
|
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2654
2759
|
|
|
2655
2760
|
|
|
2656
2761
|
|
|
@@ -2763,6 +2868,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2763
2868
|
|
|
2764
2869
|
|
|
2765
2870
|
|
|
2871
|
+
|
|
2872
|
+
|
|
2873
|
+
|
|
2766
2874
|
|
|
2767
2875
|
|
|
2768
2876
|
|
|
@@ -2822,6 +2930,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2822
2930
|
|
|
2823
2931
|
|
|
2824
2932
|
|
|
2933
|
+
|
|
2934
|
+
|
|
2935
|
+
|
|
2825
2936
|
|
|
2826
2937
|
|
|
2827
2938
|
|
|
@@ -2883,6 +2994,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2883
2994
|
|
|
2884
2995
|
|
|
2885
2996
|
|
|
2997
|
+
|
|
2998
|
+
|
|
2999
|
+
|
|
2886
3000
|
|
|
2887
3001
|
|
|
2888
3002
|
|
|
@@ -2931,6 +3045,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2931
3045
|
|
|
2932
3046
|
|
|
2933
3047
|
|
|
3048
|
+
|
|
3049
|
+
|
|
3050
|
+
|
|
2934
3051
|
|
|
2935
3052
|
|
|
2936
3053
|
|
|
@@ -2983,6 +3100,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
2983
3100
|
|
|
2984
3101
|
|
|
2985
3102
|
|
|
3103
|
+
|
|
3104
|
+
|
|
3105
|
+
|
|
2986
3106
|
|
|
2987
3107
|
|
|
2988
3108
|
|
|
@@ -3046,11 +3166,31 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3046
3166
|
* @example
|
|
3047
3167
|
* // Find value scanning from tail
|
|
3048
3168
|
* const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
|
|
3049
|
-
* //
|
|
3050
|
-
* const found = list.
|
|
3169
|
+
* // findLast scans from tail to head, returns first match
|
|
3170
|
+
* const found = list.findLast(node => node.value < 4);
|
|
3051
3171
|
* console.log(found); // 3;
|
|
3052
3172
|
*/
|
|
3173
|
+
/**
|
|
3174
|
+
* @deprecated Use `findLast` instead. Will be removed in a future major version.
|
|
3175
|
+
*/
|
|
3053
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) {
|
|
3054
3194
|
const predicate = this._ensurePredicate(elementNodeOrPredicate);
|
|
3055
3195
|
let current = this.tail;
|
|
3056
3196
|
while (current) {
|
|
@@ -3059,6 +3199,22 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3059
3199
|
}
|
|
3060
3200
|
return void 0;
|
|
3061
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
|
+
}
|
|
3062
3218
|
/**
|
|
3063
3219
|
* Reverse the list in place.
|
|
3064
3220
|
* @remarks Time O(N), Space O(1)
|
|
@@ -3098,6 +3254,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3098
3254
|
|
|
3099
3255
|
|
|
3100
3256
|
|
|
3257
|
+
|
|
3258
|
+
|
|
3259
|
+
|
|
3101
3260
|
|
|
3102
3261
|
|
|
3103
3262
|
|
|
@@ -3184,6 +3343,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3184
3343
|
|
|
3185
3344
|
|
|
3186
3345
|
|
|
3346
|
+
|
|
3347
|
+
|
|
3348
|
+
|
|
3187
3349
|
|
|
3188
3350
|
|
|
3189
3351
|
|
|
@@ -3241,6 +3403,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3241
3403
|
|
|
3242
3404
|
|
|
3243
3405
|
|
|
3406
|
+
|
|
3407
|
+
|
|
3408
|
+
|
|
3244
3409
|
|
|
3245
3410
|
|
|
3246
3411
|
|
|
@@ -3317,6 +3482,9 @@ var DoublyLinkedList = class extends LinearLinkedBase {
|
|
|
3317
3482
|
|
|
3318
3483
|
|
|
3319
3484
|
|
|
3485
|
+
|
|
3486
|
+
|
|
3487
|
+
|
|
3320
3488
|
|
|
3321
3489
|
|
|
3322
3490
|
|
|
@@ -3724,6 +3892,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3724
3892
|
|
|
3725
3893
|
|
|
3726
3894
|
|
|
3895
|
+
|
|
3896
|
+
|
|
3897
|
+
|
|
3727
3898
|
|
|
3728
3899
|
|
|
3729
3900
|
|
|
@@ -3770,6 +3941,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3770
3941
|
|
|
3771
3942
|
|
|
3772
3943
|
|
|
3944
|
+
|
|
3945
|
+
|
|
3946
|
+
|
|
3773
3947
|
|
|
3774
3948
|
|
|
3775
3949
|
|
|
@@ -3819,6 +3993,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3819
3993
|
|
|
3820
3994
|
|
|
3821
3995
|
|
|
3996
|
+
|
|
3997
|
+
|
|
3998
|
+
|
|
3822
3999
|
|
|
3823
4000
|
|
|
3824
4001
|
|
|
@@ -3876,6 +4053,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3876
4053
|
|
|
3877
4054
|
|
|
3878
4055
|
|
|
4056
|
+
|
|
4057
|
+
|
|
4058
|
+
|
|
3879
4059
|
|
|
3880
4060
|
|
|
3881
4061
|
|
|
@@ -3958,6 +4138,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3958
4138
|
|
|
3959
4139
|
|
|
3960
4140
|
|
|
4141
|
+
|
|
4142
|
+
|
|
4143
|
+
|
|
3961
4144
|
|
|
3962
4145
|
|
|
3963
4146
|
|
|
@@ -4025,6 +4208,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4025
4208
|
|
|
4026
4209
|
|
|
4027
4210
|
|
|
4211
|
+
|
|
4212
|
+
|
|
4213
|
+
|
|
4028
4214
|
|
|
4029
4215
|
|
|
4030
4216
|
|
|
@@ -4075,6 +4261,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4075
4261
|
|
|
4076
4262
|
|
|
4077
4263
|
|
|
4264
|
+
|
|
4265
|
+
|
|
4266
|
+
|
|
4078
4267
|
|
|
4079
4268
|
|
|
4080
4269
|
|
|
@@ -4145,6 +4334,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4145
4334
|
|
|
4146
4335
|
|
|
4147
4336
|
|
|
4337
|
+
|
|
4338
|
+
|
|
4339
|
+
|
|
4148
4340
|
|
|
4149
4341
|
|
|
4150
4342
|
|
|
@@ -4195,6 +4387,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4195
4387
|
|
|
4196
4388
|
|
|
4197
4389
|
|
|
4390
|
+
|
|
4391
|
+
|
|
4392
|
+
|
|
4198
4393
|
|
|
4199
4394
|
|
|
4200
4395
|
|
|
@@ -4247,6 +4442,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4247
4442
|
|
|
4248
4443
|
|
|
4249
4444
|
|
|
4445
|
+
|
|
4446
|
+
|
|
4447
|
+
|
|
4250
4448
|
|
|
4251
4449
|
|
|
4252
4450
|
|
|
@@ -4297,6 +4495,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4297
4495
|
|
|
4298
4496
|
|
|
4299
4497
|
|
|
4498
|
+
|
|
4499
|
+
|
|
4500
|
+
|
|
4300
4501
|
|
|
4301
4502
|
|
|
4302
4503
|
|
|
@@ -4350,6 +4551,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4350
4551
|
|
|
4351
4552
|
|
|
4352
4553
|
|
|
4554
|
+
|
|
4555
|
+
|
|
4556
|
+
|
|
4353
4557
|
|
|
4354
4558
|
|
|
4355
4559
|
|
|
@@ -4408,6 +4612,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4408
4612
|
|
|
4409
4613
|
|
|
4410
4614
|
|
|
4615
|
+
|
|
4616
|
+
|
|
4617
|
+
|
|
4411
4618
|
|
|
4412
4619
|
|
|
4413
4620
|
|
|
@@ -4464,6 +4671,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4464
4671
|
|
|
4465
4672
|
|
|
4466
4673
|
|
|
4674
|
+
|
|
4675
|
+
|
|
4676
|
+
|
|
4467
4677
|
|
|
4468
4678
|
|
|
4469
4679
|
|
|
@@ -4519,6 +4729,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4519
4729
|
|
|
4520
4730
|
|
|
4521
4731
|
|
|
4732
|
+
|
|
4733
|
+
|
|
4734
|
+
|
|
4522
4735
|
|
|
4523
4736
|
|
|
4524
4737
|
|
|
@@ -4580,6 +4793,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4580
4793
|
|
|
4581
4794
|
|
|
4582
4795
|
|
|
4796
|
+
|
|
4797
|
+
|
|
4798
|
+
|
|
4583
4799
|
|
|
4584
4800
|
|
|
4585
4801
|
|
|
@@ -4649,6 +4865,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4649
4865
|
|
|
4650
4866
|
|
|
4651
4867
|
|
|
4868
|
+
|
|
4869
|
+
|
|
4870
|
+
|
|
4652
4871
|
|
|
4653
4872
|
|
|
4654
4873
|
|
|
@@ -4702,6 +4921,9 @@ var SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4702
4921
|
|
|
4703
4922
|
|
|
4704
4923
|
|
|
4924
|
+
|
|
4925
|
+
|
|
4926
|
+
|
|
4705
4927
|
|
|
4706
4928
|
|
|
4707
4929
|
|
package/dist/esm/matrix.mjs
CHANGED
|
@@ -155,6 +155,9 @@ var Matrix = class _Matrix {
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
158
161
|
|
|
159
162
|
|
|
160
163
|
|
|
@@ -227,6 +230,9 @@ var Matrix = class _Matrix {
|
|
|
227
230
|
|
|
228
231
|
|
|
229
232
|
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
230
236
|
|
|
231
237
|
|
|
232
238
|
|
|
@@ -295,6 +301,9 @@ var Matrix = class _Matrix {
|
|
|
295
301
|
|
|
296
302
|
|
|
297
303
|
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
298
307
|
|
|
299
308
|
|
|
300
309
|
|
|
@@ -385,6 +394,9 @@ var Matrix = class _Matrix {
|
|
|
385
394
|
|
|
386
395
|
|
|
387
396
|
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
388
400
|
|
|
389
401
|
|
|
390
402
|
|
|
@@ -458,6 +470,9 @@ var Matrix = class _Matrix {
|
|
|
458
470
|
|
|
459
471
|
|
|
460
472
|
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
461
476
|
|
|
462
477
|
|
|
463
478
|
|
|
@@ -553,6 +568,9 @@ var Matrix = class _Matrix {
|
|
|
553
568
|
|
|
554
569
|
|
|
555
570
|
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
556
574
|
|
|
557
575
|
|
|
558
576
|
|
|
@@ -635,6 +653,9 @@ var Matrix = class _Matrix {
|
|
|
635
653
|
|
|
636
654
|
|
|
637
655
|
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
638
659
|
|
|
639
660
|
|
|
640
661
|
|
|
@@ -742,6 +763,9 @@ var Matrix = class _Matrix {
|
|
|
742
763
|
|
|
743
764
|
|
|
744
765
|
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
745
769
|
|
|
746
770
|
|
|
747
771
|
|