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/queue.cjs
CHANGED
|
@@ -161,6 +161,35 @@ var IterableElementBase = class {
|
|
|
161
161
|
for (const ele of this) if (ele === element) return true;
|
|
162
162
|
return false;
|
|
163
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
166
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
167
|
+
* @param element - Element to search for (uses `===`).
|
|
168
|
+
* @returns `true` if found.
|
|
169
|
+
*/
|
|
170
|
+
includes(element) {
|
|
171
|
+
return this.has(element);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
175
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
176
|
+
*/
|
|
177
|
+
*entries() {
|
|
178
|
+
let index = 0;
|
|
179
|
+
for (const value of this) {
|
|
180
|
+
yield [index++, value];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
185
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
186
|
+
*/
|
|
187
|
+
*keys() {
|
|
188
|
+
let index = 0;
|
|
189
|
+
for (const _ of this) {
|
|
190
|
+
yield index++;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
164
193
|
/**
|
|
165
194
|
* Reduces all elements to a single accumulated value.
|
|
166
195
|
*
|
|
@@ -471,6 +500,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
|
|
|
471
500
|
}
|
|
472
501
|
return this;
|
|
473
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
505
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
506
|
+
* @returns A new reversed instance.
|
|
507
|
+
*/
|
|
508
|
+
toReversed() {
|
|
509
|
+
const cloned = this.clone();
|
|
510
|
+
cloned.reverse();
|
|
511
|
+
return cloned;
|
|
512
|
+
}
|
|
474
513
|
};
|
|
475
514
|
var LinearLinkedBase = class extends LinearBase {
|
|
476
515
|
static {
|
|
@@ -762,6 +801,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
762
801
|
|
|
763
802
|
|
|
764
803
|
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
765
811
|
|
|
766
812
|
|
|
767
813
|
|
|
@@ -829,6 +875,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
829
875
|
|
|
830
876
|
|
|
831
877
|
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
832
885
|
|
|
833
886
|
|
|
834
887
|
|
|
@@ -901,6 +954,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
901
954
|
|
|
902
955
|
|
|
903
956
|
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
904
964
|
|
|
905
965
|
|
|
906
966
|
|
|
@@ -955,6 +1015,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
955
1015
|
|
|
956
1016
|
|
|
957
1017
|
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
958
1025
|
|
|
959
1026
|
|
|
960
1027
|
|
|
@@ -1070,6 +1137,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1070
1137
|
|
|
1071
1138
|
|
|
1072
1139
|
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1073
1147
|
|
|
1074
1148
|
|
|
1075
1149
|
|
|
@@ -1129,6 +1203,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1129
1203
|
|
|
1130
1204
|
|
|
1131
1205
|
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1132
1213
|
|
|
1133
1214
|
|
|
1134
1215
|
|
|
@@ -1177,6 +1258,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1177
1258
|
|
|
1178
1259
|
|
|
1179
1260
|
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1180
1268
|
|
|
1181
1269
|
|
|
1182
1270
|
|
|
@@ -1231,6 +1319,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1231
1319
|
|
|
1232
1320
|
|
|
1233
1321
|
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1234
1329
|
|
|
1235
1330
|
|
|
1236
1331
|
|
|
@@ -1290,6 +1385,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1290
1385
|
|
|
1291
1386
|
|
|
1292
1387
|
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1293
1395
|
|
|
1294
1396
|
|
|
1295
1397
|
|
|
@@ -1357,6 +1459,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1357
1459
|
|
|
1358
1460
|
|
|
1359
1461
|
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1360
1469
|
|
|
1361
1470
|
|
|
1362
1471
|
|
|
@@ -1401,6 +1510,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1401
1510
|
|
|
1402
1511
|
|
|
1403
1512
|
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1404
1520
|
|
|
1405
1521
|
|
|
1406
1522
|
|
|
@@ -1451,6 +1567,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1451
1567
|
|
|
1452
1568
|
|
|
1453
1569
|
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1454
1577
|
|
|
1455
1578
|
|
|
1456
1579
|
|
|
@@ -1667,6 +1790,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1667
1790
|
|
|
1668
1791
|
|
|
1669
1792
|
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1670
1800
|
|
|
1671
1801
|
|
|
1672
1802
|
|
|
@@ -1721,6 +1851,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1721
1851
|
|
|
1722
1852
|
|
|
1723
1853
|
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1724
1861
|
|
|
1725
1862
|
|
|
1726
1863
|
|
|
@@ -1803,6 +1940,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1803
1940
|
|
|
1804
1941
|
|
|
1805
1942
|
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
|
|
1806
1950
|
|
|
1807
1951
|
|
|
1808
1952
|
|
|
@@ -2038,6 +2182,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2038
2182
|
|
|
2039
2183
|
|
|
2040
2184
|
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2041
2192
|
|
|
2042
2193
|
|
|
2043
2194
|
|
|
@@ -2088,6 +2239,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2088
2239
|
|
|
2089
2240
|
|
|
2090
2241
|
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
|
|
2248
|
+
|
|
2091
2249
|
|
|
2092
2250
|
|
|
2093
2251
|
|
|
@@ -2105,6 +2263,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2105
2263
|
get first() {
|
|
2106
2264
|
return this.length > 0 ? this.elements[this._offset] : void 0;
|
|
2107
2265
|
}
|
|
2266
|
+
/**
|
|
2267
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
2268
|
+
* @remarks Time O(1), Space O(1)
|
|
2269
|
+
* @returns Front element or undefined.
|
|
2270
|
+
*/
|
|
2271
|
+
peek() {
|
|
2272
|
+
return this.first;
|
|
2273
|
+
}
|
|
2108
2274
|
/**
|
|
2109
2275
|
* Get the last element (back) without removing it.
|
|
2110
2276
|
* @remarks Time O(1), Space O(1)
|
|
@@ -2154,6 +2320,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2154
2320
|
|
|
2155
2321
|
|
|
2156
2322
|
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2157
2330
|
|
|
2158
2331
|
|
|
2159
2332
|
|
|
@@ -2216,6 +2389,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2216
2389
|
|
|
2217
2390
|
|
|
2218
2391
|
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2397
|
+
|
|
2398
|
+
|
|
2219
2399
|
|
|
2220
2400
|
|
|
2221
2401
|
|
|
@@ -2285,6 +2465,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2285
2465
|
|
|
2286
2466
|
|
|
2287
2467
|
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2288
2475
|
|
|
2289
2476
|
|
|
2290
2477
|
|
|
@@ -2344,6 +2531,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2344
2531
|
|
|
2345
2532
|
|
|
2346
2533
|
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
|
|
2540
|
+
|
|
2347
2541
|
|
|
2348
2542
|
|
|
2349
2543
|
|
|
@@ -2396,6 +2590,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2396
2590
|
|
|
2397
2591
|
|
|
2398
2592
|
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
|
|
2597
|
+
|
|
2598
|
+
|
|
2599
|
+
|
|
2399
2600
|
|
|
2400
2601
|
|
|
2401
2602
|
|
|
@@ -2450,6 +2651,21 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2450
2651
|
this._elements[this._offset + index] = newElement;
|
|
2451
2652
|
return true;
|
|
2452
2653
|
}
|
|
2654
|
+
/**
|
|
2655
|
+
* Delete the first element that satisfies a predicate.
|
|
2656
|
+
* @remarks Time O(N), Space O(N)
|
|
2657
|
+
* @param predicate - Function (value, index, queue) → boolean to decide deletion.
|
|
2658
|
+
* @returns True if a match was removed.
|
|
2659
|
+
*/
|
|
2660
|
+
deleteWhere(predicate) {
|
|
2661
|
+
for (let i = 0; i < this.length; i++) {
|
|
2662
|
+
if (predicate(this._elements[this._offset + i], i, this)) {
|
|
2663
|
+
this.deleteAt(i);
|
|
2664
|
+
return true;
|
|
2665
|
+
}
|
|
2666
|
+
}
|
|
2667
|
+
return false;
|
|
2668
|
+
}
|
|
2453
2669
|
/**
|
|
2454
2670
|
* Reverse the queue in-place by compacting then reversing.
|
|
2455
2671
|
* @remarks Time O(N), Space O(N)
|
|
@@ -2489,6 +2705,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2489
2705
|
|
|
2490
2706
|
|
|
2491
2707
|
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
|
|
2492
2715
|
|
|
2493
2716
|
|
|
2494
2717
|
|
|
@@ -2535,6 +2758,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2535
2758
|
|
|
2536
2759
|
|
|
2537
2760
|
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2766
|
+
|
|
2767
|
+
|
|
2538
2768
|
|
|
2539
2769
|
|
|
2540
2770
|
|
|
@@ -2604,6 +2834,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2604
2834
|
|
|
2605
2835
|
|
|
2606
2836
|
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2842
|
+
|
|
2843
|
+
|
|
2607
2844
|
|
|
2608
2845
|
|
|
2609
2846
|
|
|
@@ -2657,6 +2894,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2657
2894
|
|
|
2658
2895
|
|
|
2659
2896
|
|
|
2897
|
+
|
|
2898
|
+
|
|
2899
|
+
|
|
2900
|
+
|
|
2901
|
+
|
|
2902
|
+
|
|
2903
|
+
|
|
2660
2904
|
|
|
2661
2905
|
|
|
2662
2906
|
|
|
@@ -2714,6 +2958,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2714
2958
|
|
|
2715
2959
|
|
|
2716
2960
|
|
|
2961
|
+
|
|
2962
|
+
|
|
2963
|
+
|
|
2964
|
+
|
|
2965
|
+
|
|
2966
|
+
|
|
2967
|
+
|
|
2717
2968
|
|
|
2718
2969
|
|
|
2719
2970
|
|
|
@@ -2998,6 +3249,37 @@ var Deque = class extends LinearBase {
|
|
|
2998
3249
|
|
|
2999
3250
|
|
|
3000
3251
|
|
|
3252
|
+
|
|
3253
|
+
|
|
3254
|
+
|
|
3255
|
+
|
|
3256
|
+
|
|
3257
|
+
* @example
|
|
3258
|
+
* // Deque peek at both ends
|
|
3259
|
+
* const deque = new Deque<number>([10, 20, 30, 40, 50]);
|
|
3260
|
+
*
|
|
3261
|
+
* // Get first element without removing
|
|
3262
|
+
* const first = deque.at(0);
|
|
3263
|
+
* console.log(first); // 10;
|
|
3264
|
+
*
|
|
3265
|
+
* // Get last element without removing
|
|
3266
|
+
* const last = deque.at(deque.length - 1);
|
|
3267
|
+
* console.log(last); // 50;
|
|
3268
|
+
*
|
|
3269
|
+
* // Length unchanged
|
|
3270
|
+
* console.log(deque.length); // 5;
|
|
3271
|
+
*/
|
|
3272
|
+
/**
|
|
3273
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
3274
|
+
* @remarks Time O(1), Space O(1)
|
|
3275
|
+
* @returns Front element or undefined.
|
|
3276
|
+
*/
|
|
3277
|
+
peek() {
|
|
3278
|
+
return this.first;
|
|
3279
|
+
}
|
|
3280
|
+
/**
|
|
3281
|
+
* Deque peek at both ends
|
|
3282
|
+
|
|
3001
3283
|
|
|
3002
3284
|
|
|
3003
3285
|
* @example
|
|
@@ -3050,6 +3332,13 @@ var Deque = class extends LinearBase {
|
|
|
3050
3332
|
|
|
3051
3333
|
|
|
3052
3334
|
|
|
3335
|
+
|
|
3336
|
+
|
|
3337
|
+
|
|
3338
|
+
|
|
3339
|
+
|
|
3340
|
+
|
|
3341
|
+
|
|
3053
3342
|
|
|
3054
3343
|
|
|
3055
3344
|
|
|
@@ -3113,6 +3402,13 @@ var Deque = class extends LinearBase {
|
|
|
3113
3402
|
|
|
3114
3403
|
|
|
3115
3404
|
|
|
3405
|
+
|
|
3406
|
+
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
|
|
3410
|
+
|
|
3411
|
+
|
|
3116
3412
|
|
|
3117
3413
|
|
|
3118
3414
|
|
|
@@ -3189,6 +3485,13 @@ var Deque = class extends LinearBase {
|
|
|
3189
3485
|
|
|
3190
3486
|
|
|
3191
3487
|
|
|
3488
|
+
|
|
3489
|
+
|
|
3490
|
+
|
|
3491
|
+
|
|
3492
|
+
|
|
3493
|
+
|
|
3494
|
+
|
|
3192
3495
|
|
|
3193
3496
|
|
|
3194
3497
|
|
|
@@ -3252,6 +3555,13 @@ var Deque = class extends LinearBase {
|
|
|
3252
3555
|
|
|
3253
3556
|
|
|
3254
3557
|
|
|
3558
|
+
|
|
3559
|
+
|
|
3560
|
+
|
|
3561
|
+
|
|
3562
|
+
|
|
3563
|
+
|
|
3564
|
+
|
|
3255
3565
|
|
|
3256
3566
|
|
|
3257
3567
|
|
|
@@ -3316,6 +3626,13 @@ var Deque = class extends LinearBase {
|
|
|
3316
3626
|
|
|
3317
3627
|
|
|
3318
3628
|
|
|
3629
|
+
|
|
3630
|
+
|
|
3631
|
+
|
|
3632
|
+
|
|
3633
|
+
|
|
3634
|
+
|
|
3635
|
+
|
|
3319
3636
|
|
|
3320
3637
|
|
|
3321
3638
|
|
|
@@ -3421,6 +3738,13 @@ var Deque = class extends LinearBase {
|
|
|
3421
3738
|
|
|
3422
3739
|
|
|
3423
3740
|
|
|
3741
|
+
|
|
3742
|
+
|
|
3743
|
+
|
|
3744
|
+
|
|
3745
|
+
|
|
3746
|
+
|
|
3747
|
+
|
|
3424
3748
|
|
|
3425
3749
|
|
|
3426
3750
|
|
|
@@ -3466,6 +3790,13 @@ var Deque = class extends LinearBase {
|
|
|
3466
3790
|
|
|
3467
3791
|
|
|
3468
3792
|
|
|
3793
|
+
|
|
3794
|
+
|
|
3795
|
+
|
|
3796
|
+
|
|
3797
|
+
|
|
3798
|
+
|
|
3799
|
+
|
|
3469
3800
|
|
|
3470
3801
|
|
|
3471
3802
|
|
|
@@ -3515,6 +3846,13 @@ var Deque = class extends LinearBase {
|
|
|
3515
3846
|
|
|
3516
3847
|
|
|
3517
3848
|
|
|
3849
|
+
|
|
3850
|
+
|
|
3851
|
+
|
|
3852
|
+
|
|
3853
|
+
|
|
3854
|
+
|
|
3855
|
+
|
|
3518
3856
|
|
|
3519
3857
|
|
|
3520
3858
|
|
|
@@ -3715,6 +4053,13 @@ var Deque = class extends LinearBase {
|
|
|
3715
4053
|
|
|
3716
4054
|
|
|
3717
4055
|
|
|
4056
|
+
|
|
4057
|
+
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
|
|
4061
|
+
|
|
4062
|
+
|
|
3718
4063
|
|
|
3719
4064
|
|
|
3720
4065
|
|
|
@@ -3809,6 +4154,68 @@ var Deque = class extends LinearBase {
|
|
|
3809
4154
|
|
|
3810
4155
|
|
|
3811
4156
|
|
|
4157
|
+
|
|
4158
|
+
|
|
4159
|
+
|
|
4160
|
+
|
|
4161
|
+
|
|
4162
|
+
* @example
|
|
4163
|
+
* // Deque for...of iteration and reverse
|
|
4164
|
+
* const deque = new Deque<string>(['A', 'B', 'C', 'D']);
|
|
4165
|
+
*
|
|
4166
|
+
* // Iterate forward
|
|
4167
|
+
* const forward: string[] = [];
|
|
4168
|
+
* for (const item of deque) {
|
|
4169
|
+
* forward.push(item);
|
|
4170
|
+
* }
|
|
4171
|
+
* console.log(forward); // ['A', 'B', 'C', 'D'];
|
|
4172
|
+
*
|
|
4173
|
+
* // Reverse the deque
|
|
4174
|
+
* deque.reverse();
|
|
4175
|
+
* const backward: string[] = [];
|
|
4176
|
+
* for (const item of deque) {
|
|
4177
|
+
* backward.push(item);
|
|
4178
|
+
* }
|
|
4179
|
+
* console.log(backward); // ['D', 'C', 'B', 'A'];
|
|
4180
|
+
*/
|
|
4181
|
+
/**
|
|
4182
|
+
* Find the last value matching a predicate (scans back-to-front).
|
|
4183
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4184
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4185
|
+
* @returns Matching value or undefined.
|
|
4186
|
+
* @example
|
|
4187
|
+
* // Find last matching value
|
|
4188
|
+
* const d = new Deque([1, 2, 3, 4, 5]);
|
|
4189
|
+
* console.log(d.findLast(v => v > 2)); // 5;
|
|
4190
|
+
* console.log(d.findLast(v => v % 2 === 0)); // 4;
|
|
4191
|
+
*/
|
|
4192
|
+
findLast(predicate) {
|
|
4193
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4194
|
+
const val = this.at(i);
|
|
4195
|
+
if (predicate(val, i, this)) return val;
|
|
4196
|
+
}
|
|
4197
|
+
return void 0;
|
|
4198
|
+
}
|
|
4199
|
+
/**
|
|
4200
|
+
* Find the index of the last value matching a predicate (scans back-to-front).
|
|
4201
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4202
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4203
|
+
* @returns Matching index, or -1 if not found.
|
|
4204
|
+
* @example
|
|
4205
|
+
* // Find last matching index
|
|
4206
|
+
* const d = new Deque([10, 20, 30, 20, 10]);
|
|
4207
|
+
* console.log(d.findLastIndex(v => v === 20)); // 3;
|
|
4208
|
+
* console.log(d.findLastIndex(v => v === 10)); // 4;
|
|
4209
|
+
*/
|
|
4210
|
+
findLastIndex(predicate) {
|
|
4211
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4212
|
+
if (predicate(this.at(i), i, this)) return i;
|
|
4213
|
+
}
|
|
4214
|
+
return -1;
|
|
4215
|
+
}
|
|
4216
|
+
/**
|
|
4217
|
+
* Deque for...of iteration and reverse
|
|
4218
|
+
|
|
3812
4219
|
|
|
3813
4220
|
* @example
|
|
3814
4221
|
* // Deque for...of iteration and reverse
|
|
@@ -3914,6 +4321,13 @@ var Deque = class extends LinearBase {
|
|
|
3914
4321
|
|
|
3915
4322
|
|
|
3916
4323
|
|
|
4324
|
+
|
|
4325
|
+
|
|
4326
|
+
|
|
4327
|
+
|
|
4328
|
+
|
|
4329
|
+
|
|
4330
|
+
|
|
3917
4331
|
|
|
3918
4332
|
|
|
3919
4333
|
|
|
@@ -3985,6 +4399,13 @@ var Deque = class extends LinearBase {
|
|
|
3985
4399
|
|
|
3986
4400
|
|
|
3987
4401
|
|
|
4402
|
+
|
|
4403
|
+
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
|
|
4407
|
+
|
|
4408
|
+
|
|
3988
4409
|
|
|
3989
4410
|
|
|
3990
4411
|
|
|
@@ -4039,6 +4460,13 @@ var Deque = class extends LinearBase {
|
|
|
4039
4460
|
|
|
4040
4461
|
|
|
4041
4462
|
|
|
4463
|
+
|
|
4464
|
+
|
|
4465
|
+
|
|
4466
|
+
|
|
4467
|
+
|
|
4468
|
+
|
|
4469
|
+
|
|
4042
4470
|
|
|
4043
4471
|
|
|
4044
4472
|
|
|
@@ -4113,6 +4541,13 @@ var Deque = class extends LinearBase {
|
|
|
4113
4541
|
|
|
4114
4542
|
|
|
4115
4543
|
|
|
4544
|
+
|
|
4545
|
+
|
|
4546
|
+
|
|
4547
|
+
|
|
4548
|
+
|
|
4549
|
+
|
|
4550
|
+
|
|
4116
4551
|
|
|
4117
4552
|
|
|
4118
4553
|
|