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
|
@@ -190,6 +190,35 @@ var _IterableElementBase = class _IterableElementBase {
|
|
|
190
190
|
for (const ele of this) if (ele === element) return true;
|
|
191
191
|
return false;
|
|
192
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
195
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
196
|
+
* @param element - Element to search for (uses `===`).
|
|
197
|
+
* @returns `true` if found.
|
|
198
|
+
*/
|
|
199
|
+
includes(element) {
|
|
200
|
+
return this.has(element);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
204
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
205
|
+
*/
|
|
206
|
+
*entries() {
|
|
207
|
+
let index = 0;
|
|
208
|
+
for (const value of this) {
|
|
209
|
+
yield [index++, value];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
214
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
215
|
+
*/
|
|
216
|
+
*keys() {
|
|
217
|
+
let index = 0;
|
|
218
|
+
for (const _ of this) {
|
|
219
|
+
yield index++;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
193
222
|
/**
|
|
194
223
|
* Reduces all elements to a single accumulated value.
|
|
195
224
|
*
|
|
@@ -498,6 +527,16 @@ var _LinearBase = class _LinearBase extends IterableElementBase {
|
|
|
498
527
|
}
|
|
499
528
|
return this;
|
|
500
529
|
}
|
|
530
|
+
/**
|
|
531
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
532
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
533
|
+
* @returns A new reversed instance.
|
|
534
|
+
*/
|
|
535
|
+
toReversed() {
|
|
536
|
+
const cloned = this.clone();
|
|
537
|
+
cloned.reverse();
|
|
538
|
+
return cloned;
|
|
539
|
+
}
|
|
501
540
|
};
|
|
502
541
|
__name(_LinearBase, "LinearBase");
|
|
503
542
|
var LinearBase = _LinearBase;
|
|
@@ -796,6 +835,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
796
835
|
|
|
797
836
|
|
|
798
837
|
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
799
841
|
|
|
800
842
|
|
|
801
843
|
|
|
@@ -867,6 +909,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
867
909
|
|
|
868
910
|
|
|
869
911
|
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
870
915
|
|
|
871
916
|
|
|
872
917
|
|
|
@@ -944,6 +989,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
944
989
|
|
|
945
990
|
|
|
946
991
|
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
947
995
|
|
|
948
996
|
|
|
949
997
|
|
|
@@ -1002,6 +1050,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1002
1050
|
|
|
1003
1051
|
|
|
1004
1052
|
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1005
1056
|
|
|
1006
1057
|
|
|
1007
1058
|
|
|
@@ -1121,6 +1172,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1121
1172
|
|
|
1122
1173
|
|
|
1123
1174
|
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
|
|
1124
1178
|
|
|
1125
1179
|
|
|
1126
1180
|
|
|
@@ -1184,6 +1238,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1184
1238
|
|
|
1185
1239
|
|
|
1186
1240
|
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
|
|
1187
1244
|
|
|
1188
1245
|
|
|
1189
1246
|
|
|
@@ -1236,6 +1293,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1236
1293
|
|
|
1237
1294
|
|
|
1238
1295
|
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
|
|
1239
1299
|
|
|
1240
1300
|
|
|
1241
1301
|
|
|
@@ -1294,6 +1354,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1294
1354
|
|
|
1295
1355
|
|
|
1296
1356
|
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
|
|
1297
1360
|
|
|
1298
1361
|
|
|
1299
1362
|
|
|
@@ -1357,6 +1420,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1357
1420
|
|
|
1358
1421
|
|
|
1359
1422
|
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
|
|
1360
1426
|
|
|
1361
1427
|
|
|
1362
1428
|
|
|
@@ -1428,6 +1494,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1428
1494
|
|
|
1429
1495
|
|
|
1430
1496
|
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
|
|
1431
1500
|
|
|
1432
1501
|
|
|
1433
1502
|
|
|
@@ -1476,6 +1545,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1476
1545
|
|
|
1477
1546
|
|
|
1478
1547
|
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
|
|
1479
1551
|
|
|
1480
1552
|
|
|
1481
1553
|
|
|
@@ -1530,6 +1602,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1530
1602
|
|
|
1531
1603
|
|
|
1532
1604
|
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
|
|
1533
1608
|
|
|
1534
1609
|
|
|
1535
1610
|
|
|
@@ -1750,6 +1825,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1750
1825
|
|
|
1751
1826
|
|
|
1752
1827
|
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1753
1831
|
|
|
1754
1832
|
|
|
1755
1833
|
|
|
@@ -1808,6 +1886,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1808
1886
|
|
|
1809
1887
|
|
|
1810
1888
|
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1811
1892
|
|
|
1812
1893
|
|
|
1813
1894
|
|
|
@@ -1894,6 +1975,9 @@ var _SinglyLinkedList = class _SinglyLinkedList extends LinearLinkedBase {
|
|
|
1894
1975
|
|
|
1895
1976
|
|
|
1896
1977
|
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
|
|
1897
1981
|
|
|
1898
1982
|
|
|
1899
1983
|
|
|
@@ -2218,6 +2302,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2218
2302
|
|
|
2219
2303
|
|
|
2220
2304
|
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2221
2308
|
|
|
2222
2309
|
|
|
2223
2310
|
|
|
@@ -2291,6 +2378,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2291
2378
|
|
|
2292
2379
|
|
|
2293
2380
|
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2294
2384
|
|
|
2295
2385
|
|
|
2296
2386
|
|
|
@@ -2363,6 +2453,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2363
2453
|
|
|
2364
2454
|
|
|
2365
2455
|
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
|
|
2366
2459
|
|
|
2367
2460
|
|
|
2368
2461
|
|
|
@@ -2426,6 +2519,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2426
2519
|
|
|
2427
2520
|
|
|
2428
2521
|
|
|
2522
|
+
|
|
2523
|
+
|
|
2524
|
+
|
|
2429
2525
|
|
|
2430
2526
|
|
|
2431
2527
|
|
|
@@ -2518,6 +2614,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2518
2614
|
|
|
2519
2615
|
|
|
2520
2616
|
|
|
2617
|
+
|
|
2618
|
+
|
|
2619
|
+
|
|
2521
2620
|
|
|
2522
2621
|
|
|
2523
2622
|
|
|
@@ -2571,6 +2670,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2571
2670
|
|
|
2572
2671
|
|
|
2573
2672
|
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
|
|
2574
2676
|
|
|
2575
2677
|
|
|
2576
2678
|
|
|
@@ -2655,6 +2757,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2655
2757
|
|
|
2656
2758
|
|
|
2657
2759
|
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2658
2763
|
|
|
2659
2764
|
|
|
2660
2765
|
|
|
@@ -2767,6 +2872,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2767
2872
|
|
|
2768
2873
|
|
|
2769
2874
|
|
|
2875
|
+
|
|
2876
|
+
|
|
2877
|
+
|
|
2770
2878
|
|
|
2771
2879
|
|
|
2772
2880
|
|
|
@@ -2826,6 +2934,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2826
2934
|
|
|
2827
2935
|
|
|
2828
2936
|
|
|
2937
|
+
|
|
2938
|
+
|
|
2939
|
+
|
|
2829
2940
|
|
|
2830
2941
|
|
|
2831
2942
|
|
|
@@ -2887,6 +2998,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2887
2998
|
|
|
2888
2999
|
|
|
2889
3000
|
|
|
3001
|
+
|
|
3002
|
+
|
|
3003
|
+
|
|
2890
3004
|
|
|
2891
3005
|
|
|
2892
3006
|
|
|
@@ -2935,6 +3049,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2935
3049
|
|
|
2936
3050
|
|
|
2937
3051
|
|
|
3052
|
+
|
|
3053
|
+
|
|
3054
|
+
|
|
2938
3055
|
|
|
2939
3056
|
|
|
2940
3057
|
|
|
@@ -2987,6 +3104,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
2987
3104
|
|
|
2988
3105
|
|
|
2989
3106
|
|
|
3107
|
+
|
|
3108
|
+
|
|
3109
|
+
|
|
2990
3110
|
|
|
2991
3111
|
|
|
2992
3112
|
|
|
@@ -3050,11 +3170,31 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
3050
3170
|
* @example
|
|
3051
3171
|
* // Find value scanning from tail
|
|
3052
3172
|
* const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
|
|
3053
|
-
* //
|
|
3054
|
-
* const found = list.
|
|
3173
|
+
* // findLast scans from tail to head, returns first match
|
|
3174
|
+
* const found = list.findLast(node => node.value < 4);
|
|
3055
3175
|
* console.log(found); // 3;
|
|
3056
3176
|
*/
|
|
3177
|
+
/**
|
|
3178
|
+
* @deprecated Use `findLast` instead. Will be removed in a future major version.
|
|
3179
|
+
*/
|
|
3057
3180
|
getBackward(elementNodeOrPredicate) {
|
|
3181
|
+
return this.findLast(elementNodeOrPredicate);
|
|
3182
|
+
}
|
|
3183
|
+
/**
|
|
3184
|
+
* Find the first value matching a predicate scanning backward (tail → head).
|
|
3185
|
+
* @remarks Time O(N), Space O(1)
|
|
3186
|
+
* @param elementNodeOrPredicate - Element, node, or predicate to match.
|
|
3187
|
+
* @returns Matching value or undefined.
|
|
3188
|
+
|
|
3189
|
+
|
|
3190
|
+
* @example
|
|
3191
|
+
* // Find value scanning from tail
|
|
3192
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
|
|
3193
|
+
* // findLast scans from tail to head, returns first match
|
|
3194
|
+
* const found = list.findLast(node => node.value < 4);
|
|
3195
|
+
* console.log(found); // 3;
|
|
3196
|
+
*/
|
|
3197
|
+
findLast(elementNodeOrPredicate) {
|
|
3058
3198
|
const predicate = this._ensurePredicate(elementNodeOrPredicate);
|
|
3059
3199
|
let current = this.tail;
|
|
3060
3200
|
while (current) {
|
|
@@ -3063,6 +3203,22 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
3063
3203
|
}
|
|
3064
3204
|
return void 0;
|
|
3065
3205
|
}
|
|
3206
|
+
/**
|
|
3207
|
+
* Find the index of the last value matching a predicate (scans tail → head).
|
|
3208
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
3209
|
+
* @param predicate - Function called with (value, index, list).
|
|
3210
|
+
* @returns Matching index, or -1 if not found.
|
|
3211
|
+
*/
|
|
3212
|
+
findLastIndex(predicate) {
|
|
3213
|
+
let current = this.tail;
|
|
3214
|
+
let index = this.length - 1;
|
|
3215
|
+
while (current) {
|
|
3216
|
+
if (predicate(current.value, index, this)) return index;
|
|
3217
|
+
current = current.prev;
|
|
3218
|
+
index--;
|
|
3219
|
+
}
|
|
3220
|
+
return -1;
|
|
3221
|
+
}
|
|
3066
3222
|
/**
|
|
3067
3223
|
* Reverse the list in place.
|
|
3068
3224
|
* @remarks Time O(N), Space O(1)
|
|
@@ -3102,6 +3258,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
3102
3258
|
|
|
3103
3259
|
|
|
3104
3260
|
|
|
3261
|
+
|
|
3262
|
+
|
|
3263
|
+
|
|
3105
3264
|
|
|
3106
3265
|
|
|
3107
3266
|
|
|
@@ -3188,6 +3347,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
3188
3347
|
|
|
3189
3348
|
|
|
3190
3349
|
|
|
3350
|
+
|
|
3351
|
+
|
|
3352
|
+
|
|
3191
3353
|
|
|
3192
3354
|
|
|
3193
3355
|
|
|
@@ -3245,6 +3407,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
3245
3407
|
|
|
3246
3408
|
|
|
3247
3409
|
|
|
3410
|
+
|
|
3411
|
+
|
|
3412
|
+
|
|
3248
3413
|
|
|
3249
3414
|
|
|
3250
3415
|
|
|
@@ -3321,6 +3486,9 @@ var _DoublyLinkedList = class _DoublyLinkedList extends LinearLinkedBase {
|
|
|
3321
3486
|
|
|
3322
3487
|
|
|
3323
3488
|
|
|
3489
|
+
|
|
3490
|
+
|
|
3491
|
+
|
|
3324
3492
|
|
|
3325
3493
|
|
|
3326
3494
|
|
|
@@ -3726,6 +3894,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3726
3894
|
|
|
3727
3895
|
|
|
3728
3896
|
|
|
3897
|
+
|
|
3898
|
+
|
|
3899
|
+
|
|
3729
3900
|
|
|
3730
3901
|
|
|
3731
3902
|
|
|
@@ -3772,6 +3943,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3772
3943
|
|
|
3773
3944
|
|
|
3774
3945
|
|
|
3946
|
+
|
|
3947
|
+
|
|
3948
|
+
|
|
3775
3949
|
|
|
3776
3950
|
|
|
3777
3951
|
|
|
@@ -3821,6 +3995,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3821
3995
|
|
|
3822
3996
|
|
|
3823
3997
|
|
|
3998
|
+
|
|
3999
|
+
|
|
4000
|
+
|
|
3824
4001
|
|
|
3825
4002
|
|
|
3826
4003
|
|
|
@@ -3878,6 +4055,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3878
4055
|
|
|
3879
4056
|
|
|
3880
4057
|
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
|
|
3881
4061
|
|
|
3882
4062
|
|
|
3883
4063
|
|
|
@@ -3960,6 +4140,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
3960
4140
|
|
|
3961
4141
|
|
|
3962
4142
|
|
|
4143
|
+
|
|
4144
|
+
|
|
4145
|
+
|
|
3963
4146
|
|
|
3964
4147
|
|
|
3965
4148
|
|
|
@@ -4027,6 +4210,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4027
4210
|
|
|
4028
4211
|
|
|
4029
4212
|
|
|
4213
|
+
|
|
4214
|
+
|
|
4215
|
+
|
|
4030
4216
|
|
|
4031
4217
|
|
|
4032
4218
|
|
|
@@ -4077,6 +4263,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4077
4263
|
|
|
4078
4264
|
|
|
4079
4265
|
|
|
4266
|
+
|
|
4267
|
+
|
|
4268
|
+
|
|
4080
4269
|
|
|
4081
4270
|
|
|
4082
4271
|
|
|
@@ -4147,6 +4336,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4147
4336
|
|
|
4148
4337
|
|
|
4149
4338
|
|
|
4339
|
+
|
|
4340
|
+
|
|
4341
|
+
|
|
4150
4342
|
|
|
4151
4343
|
|
|
4152
4344
|
|
|
@@ -4197,6 +4389,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4197
4389
|
|
|
4198
4390
|
|
|
4199
4391
|
|
|
4392
|
+
|
|
4393
|
+
|
|
4394
|
+
|
|
4200
4395
|
|
|
4201
4396
|
|
|
4202
4397
|
|
|
@@ -4249,6 +4444,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4249
4444
|
|
|
4250
4445
|
|
|
4251
4446
|
|
|
4447
|
+
|
|
4448
|
+
|
|
4449
|
+
|
|
4252
4450
|
|
|
4253
4451
|
|
|
4254
4452
|
|
|
@@ -4299,6 +4497,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4299
4497
|
|
|
4300
4498
|
|
|
4301
4499
|
|
|
4500
|
+
|
|
4501
|
+
|
|
4502
|
+
|
|
4302
4503
|
|
|
4303
4504
|
|
|
4304
4505
|
|
|
@@ -4352,6 +4553,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4352
4553
|
|
|
4353
4554
|
|
|
4354
4555
|
|
|
4556
|
+
|
|
4557
|
+
|
|
4558
|
+
|
|
4355
4559
|
|
|
4356
4560
|
|
|
4357
4561
|
|
|
@@ -4410,6 +4614,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4410
4614
|
|
|
4411
4615
|
|
|
4412
4616
|
|
|
4617
|
+
|
|
4618
|
+
|
|
4619
|
+
|
|
4413
4620
|
|
|
4414
4621
|
|
|
4415
4622
|
|
|
@@ -4466,6 +4673,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4466
4673
|
|
|
4467
4674
|
|
|
4468
4675
|
|
|
4676
|
+
|
|
4677
|
+
|
|
4678
|
+
|
|
4469
4679
|
|
|
4470
4680
|
|
|
4471
4681
|
|
|
@@ -4521,6 +4731,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4521
4731
|
|
|
4522
4732
|
|
|
4523
4733
|
|
|
4734
|
+
|
|
4735
|
+
|
|
4736
|
+
|
|
4524
4737
|
|
|
4525
4738
|
|
|
4526
4739
|
|
|
@@ -4582,6 +4795,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4582
4795
|
|
|
4583
4796
|
|
|
4584
4797
|
|
|
4798
|
+
|
|
4799
|
+
|
|
4800
|
+
|
|
4585
4801
|
|
|
4586
4802
|
|
|
4587
4803
|
|
|
@@ -4651,6 +4867,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4651
4867
|
|
|
4652
4868
|
|
|
4653
4869
|
|
|
4870
|
+
|
|
4871
|
+
|
|
4872
|
+
|
|
4654
4873
|
|
|
4655
4874
|
|
|
4656
4875
|
|
|
@@ -4704,6 +4923,9 @@ var _SkipList = class _SkipList extends IterableEntryBase {
|
|
|
4704
4923
|
|
|
4705
4924
|
|
|
4706
4925
|
|
|
4926
|
+
|
|
4927
|
+
|
|
4928
|
+
|
|
4707
4929
|
|
|
4708
4930
|
|
|
4709
4931
|
|
|
@@ -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
|
|
|
@@ -386,6 +395,9 @@ var _Matrix = class _Matrix {
|
|
|
386
395
|
|
|
387
396
|
|
|
388
397
|
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
389
401
|
|
|
390
402
|
|
|
391
403
|
|
|
@@ -460,6 +472,9 @@ var _Matrix = class _Matrix {
|
|
|
460
472
|
|
|
461
473
|
|
|
462
474
|
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
463
478
|
|
|
464
479
|
|
|
465
480
|
|
|
@@ -555,6 +570,9 @@ var _Matrix = class _Matrix {
|
|
|
555
570
|
|
|
556
571
|
|
|
557
572
|
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
558
576
|
|
|
559
577
|
|
|
560
578
|
|
|
@@ -637,6 +655,9 @@ var _Matrix = class _Matrix {
|
|
|
637
655
|
|
|
638
656
|
|
|
639
657
|
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
640
661
|
|
|
641
662
|
|
|
642
663
|
|
|
@@ -745,6 +766,9 @@ var _Matrix = class _Matrix {
|
|
|
745
766
|
|
|
746
767
|
|
|
747
768
|
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
748
772
|
|
|
749
773
|
|
|
750
774
|
|