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.
- package/.husky/pre-commit +3 -0
- package/CHANGELOG.md +3 -1
- package/MIGRATION.md +217 -0
- package/README.md +80 -8
- package/README_CN.md +569 -143
- package/SPECIFICATION.md +44 -14
- package/SPECIFICATION.zh-CN.md +44 -14
- package/dist/cjs/binary-tree.cjs +5841 -1678
- package/dist/cjs/graph.cjs +422 -14
- package/dist/cjs/hash.cjs +95 -7
- package/dist/cjs/heap.cjs +174 -16
- package/dist/cjs/index.cjs +7751 -2449
- package/dist/cjs/linked-list.cjs +443 -2
- package/dist/cjs/matrix.cjs +56 -0
- package/dist/cjs/priority-queue.cjs +172 -14
- package/dist/cjs/queue.cjs +435 -0
- package/dist/cjs/stack.cjs +103 -4
- package/dist/cjs/trie.cjs +106 -0
- package/dist/cjs-legacy/binary-tree.cjs +5933 -1772
- package/dist/cjs-legacy/graph.cjs +422 -14
- package/dist/cjs-legacy/hash.cjs +95 -7
- package/dist/cjs-legacy/heap.cjs +174 -16
- package/dist/cjs-legacy/index.cjs +8154 -2854
- package/dist/cjs-legacy/linked-list.cjs +443 -2
- package/dist/cjs-legacy/matrix.cjs +56 -0
- package/dist/cjs-legacy/priority-queue.cjs +172 -14
- package/dist/cjs-legacy/queue.cjs +435 -0
- package/dist/cjs-legacy/stack.cjs +103 -4
- package/dist/cjs-legacy/trie.cjs +106 -0
- package/dist/esm/binary-tree.mjs +5841 -1678
- package/dist/esm/graph.mjs +422 -14
- package/dist/esm/hash.mjs +95 -7
- package/dist/esm/heap.mjs +174 -16
- package/dist/esm/index.mjs +7751 -2449
- package/dist/esm/linked-list.mjs +443 -2
- package/dist/esm/matrix.mjs +56 -0
- package/dist/esm/priority-queue.mjs +172 -14
- package/dist/esm/queue.mjs +435 -0
- package/dist/esm/stack.mjs +103 -4
- package/dist/esm/trie.mjs +106 -0
- package/dist/esm-legacy/binary-tree.mjs +5933 -1772
- package/dist/esm-legacy/graph.mjs +422 -14
- package/dist/esm-legacy/hash.mjs +95 -7
- package/dist/esm-legacy/heap.mjs +174 -16
- package/dist/esm-legacy/index.mjs +8154 -2854
- package/dist/esm-legacy/linked-list.mjs +443 -2
- package/dist/esm-legacy/matrix.mjs +56 -0
- package/dist/esm-legacy/priority-queue.mjs +172 -14
- package/dist/esm-legacy/queue.mjs +435 -0
- package/dist/esm-legacy/stack.mjs +103 -4
- package/dist/esm-legacy/trie.mjs +106 -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 +86 -2
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +98 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +191 -15
- package/dist/types/data-structures/binary-tree/bst.d.ts +171 -3
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +136 -8
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +42 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +1061 -167
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1232 -355
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +916 -194
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +1078 -141
- package/dist/types/data-structures/graph/directed-graph.d.ts +70 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +63 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +84 -6
- package/dist/types/data-structures/heap/heap.d.ts +140 -12
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +150 -2
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +106 -1
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +126 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +56 -0
- package/dist/types/data-structures/queue/deque.d.ts +171 -0
- package/dist/types/data-structures/queue/queue.d.ts +97 -0
- package/dist/types/data-structures/stack/stack.d.ts +72 -2
- package/dist/types/data-structures/trie/trie.d.ts +84 -0
- package/dist/types/interfaces/binary-tree.d.ts +2 -3
- package/dist/umd/data-structure-typed.js +7784 -2484
- package/dist/umd/data-structure-typed.min.js +4 -4
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +188 -200
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +62 -62
- package/docs-site-docusaurus/docs/api/classes/BST.md +183 -195
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +143 -155
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
- package/docs-site-docusaurus/docs/api/classes/Deque.md +99 -85
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +73 -73
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +100 -70
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +38 -38
- package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +23 -23
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +48 -48
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +52 -52
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +46 -42
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +74 -74
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +73 -73
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
- package/docs-site-docusaurus/docs/api/classes/Queue.md +111 -59
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +200 -212
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +75 -75
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +37 -37
- package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +107 -36
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +43 -43
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +106 -35
- package/docs-site-docusaurus/docs/api/classes/Trie.md +43 -43
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +72 -72
- package/docs-site-docusaurus/docs/guide/architecture.md +75 -7
- package/docs-site-docusaurus/docs/guide/concepts.md +53 -34
- package/docs-site-docusaurus/docs/guide/faq.md +53 -0
- package/docs-site-docusaurus/docs/guide/guides.md +8 -9
- package/docs-site-docusaurus/docs/guide/integrations.md +74 -177
- package/docs-site-docusaurus/docs/guide/overview.md +131 -17
- package/docs-site-docusaurus/src/pages/index.tsx +4 -0
- package/docs-site-docusaurus/typedoc.json +1 -0
- package/jest.integration.config.js +1 -2
- package/package.json +10 -7
- package/src/data-structures/base/iterable-element-base.ts +32 -0
- package/src/data-structures/base/linear-base.ts +11 -0
- package/src/data-structures/binary-tree/avl-tree.ts +88 -5
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +98 -0
- package/src/data-structures/binary-tree/binary-tree.ts +242 -81
- package/src/data-structures/binary-tree/bst.ts +173 -7
- package/src/data-structures/binary-tree/red-black-tree.ts +139 -15
- package/src/data-structures/binary-tree/segment-tree.ts +42 -0
- package/src/data-structures/binary-tree/tree-map.ts +948 -36
- package/src/data-structures/binary-tree/tree-multi-map.ts +893 -13
- package/src/data-structures/binary-tree/tree-multi-set.ts +761 -33
- package/src/data-structures/binary-tree/tree-set.ts +1260 -251
- package/src/data-structures/graph/directed-graph.ts +71 -1
- package/src/data-structures/graph/undirected-graph.ts +64 -1
- package/src/data-structures/hash/hash-map.ts +100 -12
- package/src/data-structures/heap/heap.ts +149 -19
- package/src/data-structures/linked-list/doubly-linked-list.ts +178 -2
- package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
- package/src/data-structures/linked-list/skip-linked-list.ts +126 -0
- package/src/data-structures/matrix/matrix.ts +56 -0
- package/src/data-structures/queue/deque.ts +187 -0
- package/src/data-structures/queue/queue.ts +109 -0
- package/src/data-structures/stack/stack.ts +75 -5
- package/src/data-structures/trie/trie.ts +84 -0
- package/src/interfaces/binary-tree.ts +1 -9
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
package/dist/cjs/linked-list.cjs
CHANGED
|
@@ -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
|
-
* //
|
|
2940
|
-
* const found = list.
|
|
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
|
|