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/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 {
|
|
@@ -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
|
-
* //
|
|
2938
|
-
* const found = list.
|
|
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
|
|