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/queue.mjs
CHANGED
|
@@ -159,6 +159,35 @@ var IterableElementBase = class {
|
|
|
159
159
|
for (const ele of this) if (ele === element) return true;
|
|
160
160
|
return false;
|
|
161
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Check whether a value exists (Array-compatible alias for `has`).
|
|
164
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
165
|
+
* @param element - Element to search for (uses `===`).
|
|
166
|
+
* @returns `true` if found.
|
|
167
|
+
*/
|
|
168
|
+
includes(element) {
|
|
169
|
+
return this.has(element);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Return an iterator of `[index, value]` pairs (Array-compatible).
|
|
173
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
174
|
+
*/
|
|
175
|
+
*entries() {
|
|
176
|
+
let index = 0;
|
|
177
|
+
for (const value of this) {
|
|
178
|
+
yield [index++, value];
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Return an iterator of numeric indices (Array-compatible).
|
|
183
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1) per step.
|
|
184
|
+
*/
|
|
185
|
+
*keys() {
|
|
186
|
+
let index = 0;
|
|
187
|
+
for (const _ of this) {
|
|
188
|
+
yield index++;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
162
191
|
/**
|
|
163
192
|
* Reduces all elements to a single accumulated value.
|
|
164
193
|
*
|
|
@@ -469,6 +498,16 @@ var LinearBase = class _LinearBase extends IterableElementBase {
|
|
|
469
498
|
}
|
|
470
499
|
return this;
|
|
471
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* Return a new instance of the same type with elements in reverse order (non-mutating).
|
|
503
|
+
* @remarks Provided for familiarity when migrating from Array (ES2023 `toReversed`). Time O(n), Space O(n).
|
|
504
|
+
* @returns A new reversed instance.
|
|
505
|
+
*/
|
|
506
|
+
toReversed() {
|
|
507
|
+
const cloned = this.clone();
|
|
508
|
+
cloned.reverse();
|
|
509
|
+
return cloned;
|
|
510
|
+
}
|
|
472
511
|
};
|
|
473
512
|
var LinearLinkedBase = class extends LinearBase {
|
|
474
513
|
static {
|
|
@@ -760,6 +799,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
760
799
|
|
|
761
800
|
|
|
762
801
|
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
763
809
|
|
|
764
810
|
|
|
765
811
|
|
|
@@ -827,6 +873,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
827
873
|
|
|
828
874
|
|
|
829
875
|
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
830
883
|
|
|
831
884
|
|
|
832
885
|
|
|
@@ -899,6 +952,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
899
952
|
|
|
900
953
|
|
|
901
954
|
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
902
962
|
|
|
903
963
|
|
|
904
964
|
|
|
@@ -953,6 +1013,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
953
1013
|
|
|
954
1014
|
|
|
955
1015
|
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
956
1023
|
|
|
957
1024
|
|
|
958
1025
|
|
|
@@ -1068,6 +1135,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1068
1135
|
|
|
1069
1136
|
|
|
1070
1137
|
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
|
|
1144
|
+
|
|
1071
1145
|
|
|
1072
1146
|
|
|
1073
1147
|
|
|
@@ -1127,6 +1201,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1127
1201
|
|
|
1128
1202
|
|
|
1129
1203
|
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1130
1211
|
|
|
1131
1212
|
|
|
1132
1213
|
|
|
@@ -1175,6 +1256,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1175
1256
|
|
|
1176
1257
|
|
|
1177
1258
|
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1178
1266
|
|
|
1179
1267
|
|
|
1180
1268
|
|
|
@@ -1229,6 +1317,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1229
1317
|
|
|
1230
1318
|
|
|
1231
1319
|
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1232
1327
|
|
|
1233
1328
|
|
|
1234
1329
|
|
|
@@ -1288,6 +1383,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1288
1383
|
|
|
1289
1384
|
|
|
1290
1385
|
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1291
1393
|
|
|
1292
1394
|
|
|
1293
1395
|
|
|
@@ -1355,6 +1457,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1355
1457
|
|
|
1356
1458
|
|
|
1357
1459
|
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1358
1467
|
|
|
1359
1468
|
|
|
1360
1469
|
|
|
@@ -1399,6 +1508,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1399
1508
|
|
|
1400
1509
|
|
|
1401
1510
|
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1402
1518
|
|
|
1403
1519
|
|
|
1404
1520
|
|
|
@@ -1449,6 +1565,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1449
1565
|
|
|
1450
1566
|
|
|
1451
1567
|
|
|
1568
|
+
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
|
|
1452
1575
|
|
|
1453
1576
|
|
|
1454
1577
|
|
|
@@ -1665,6 +1788,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1665
1788
|
|
|
1666
1789
|
|
|
1667
1790
|
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1668
1798
|
|
|
1669
1799
|
|
|
1670
1800
|
|
|
@@ -1719,6 +1849,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1719
1849
|
|
|
1720
1850
|
|
|
1721
1851
|
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1722
1859
|
|
|
1723
1860
|
|
|
1724
1861
|
|
|
@@ -1801,6 +1938,13 @@ var SinglyLinkedList = class extends LinearLinkedBase {
|
|
|
1801
1938
|
|
|
1802
1939
|
|
|
1803
1940
|
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
|
|
1804
1948
|
|
|
1805
1949
|
|
|
1806
1950
|
|
|
@@ -2036,6 +2180,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2036
2180
|
|
|
2037
2181
|
|
|
2038
2182
|
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2039
2190
|
|
|
2040
2191
|
|
|
2041
2192
|
|
|
@@ -2086,6 +2237,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2086
2237
|
|
|
2087
2238
|
|
|
2088
2239
|
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2089
2247
|
|
|
2090
2248
|
|
|
2091
2249
|
|
|
@@ -2103,6 +2261,14 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2103
2261
|
get first() {
|
|
2104
2262
|
return this.length > 0 ? this.elements[this._offset] : void 0;
|
|
2105
2263
|
}
|
|
2264
|
+
/**
|
|
2265
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
2266
|
+
* @remarks Time O(1), Space O(1)
|
|
2267
|
+
* @returns Front element or undefined.
|
|
2268
|
+
*/
|
|
2269
|
+
peek() {
|
|
2270
|
+
return this.first;
|
|
2271
|
+
}
|
|
2106
2272
|
/**
|
|
2107
2273
|
* Get the last element (back) without removing it.
|
|
2108
2274
|
* @remarks Time O(1), Space O(1)
|
|
@@ -2152,6 +2318,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2152
2318
|
|
|
2153
2319
|
|
|
2154
2320
|
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2155
2328
|
|
|
2156
2329
|
|
|
2157
2330
|
|
|
@@ -2214,6 +2387,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2214
2387
|
|
|
2215
2388
|
|
|
2216
2389
|
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2217
2397
|
|
|
2218
2398
|
|
|
2219
2399
|
|
|
@@ -2283,6 +2463,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2283
2463
|
|
|
2284
2464
|
|
|
2285
2465
|
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2286
2473
|
|
|
2287
2474
|
|
|
2288
2475
|
|
|
@@ -2342,6 +2529,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2342
2529
|
|
|
2343
2530
|
|
|
2344
2531
|
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
|
|
2537
|
+
|
|
2538
|
+
|
|
2345
2539
|
|
|
2346
2540
|
|
|
2347
2541
|
|
|
@@ -2394,6 +2588,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2394
2588
|
|
|
2395
2589
|
|
|
2396
2590
|
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
|
|
2597
|
+
|
|
2397
2598
|
|
|
2398
2599
|
|
|
2399
2600
|
|
|
@@ -2448,6 +2649,21 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2448
2649
|
this._elements[this._offset + index] = newElement;
|
|
2449
2650
|
return true;
|
|
2450
2651
|
}
|
|
2652
|
+
/**
|
|
2653
|
+
* Delete the first element that satisfies a predicate.
|
|
2654
|
+
* @remarks Time O(N), Space O(N)
|
|
2655
|
+
* @param predicate - Function (value, index, queue) → boolean to decide deletion.
|
|
2656
|
+
* @returns True if a match was removed.
|
|
2657
|
+
*/
|
|
2658
|
+
deleteWhere(predicate) {
|
|
2659
|
+
for (let i = 0; i < this.length; i++) {
|
|
2660
|
+
if (predicate(this._elements[this._offset + i], i, this)) {
|
|
2661
|
+
this.deleteAt(i);
|
|
2662
|
+
return true;
|
|
2663
|
+
}
|
|
2664
|
+
}
|
|
2665
|
+
return false;
|
|
2666
|
+
}
|
|
2451
2667
|
/**
|
|
2452
2668
|
* Reverse the queue in-place by compacting then reversing.
|
|
2453
2669
|
* @remarks Time O(N), Space O(N)
|
|
@@ -2487,6 +2703,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2487
2703
|
|
|
2488
2704
|
|
|
2489
2705
|
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2490
2713
|
|
|
2491
2714
|
|
|
2492
2715
|
|
|
@@ -2533,6 +2756,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2533
2756
|
|
|
2534
2757
|
|
|
2535
2758
|
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2536
2766
|
|
|
2537
2767
|
|
|
2538
2768
|
|
|
@@ -2602,6 +2832,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2602
2832
|
|
|
2603
2833
|
|
|
2604
2834
|
|
|
2835
|
+
|
|
2836
|
+
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2605
2842
|
|
|
2606
2843
|
|
|
2607
2844
|
|
|
@@ -2655,6 +2892,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2655
2892
|
|
|
2656
2893
|
|
|
2657
2894
|
|
|
2895
|
+
|
|
2896
|
+
|
|
2897
|
+
|
|
2898
|
+
|
|
2899
|
+
|
|
2900
|
+
|
|
2901
|
+
|
|
2658
2902
|
|
|
2659
2903
|
|
|
2660
2904
|
|
|
@@ -2712,6 +2956,13 @@ var Queue = class _Queue extends LinearBase {
|
|
|
2712
2956
|
|
|
2713
2957
|
|
|
2714
2958
|
|
|
2959
|
+
|
|
2960
|
+
|
|
2961
|
+
|
|
2962
|
+
|
|
2963
|
+
|
|
2964
|
+
|
|
2965
|
+
|
|
2715
2966
|
|
|
2716
2967
|
|
|
2717
2968
|
|
|
@@ -2996,6 +3247,37 @@ var Deque = class extends LinearBase {
|
|
|
2996
3247
|
|
|
2997
3248
|
|
|
2998
3249
|
|
|
3250
|
+
|
|
3251
|
+
|
|
3252
|
+
|
|
3253
|
+
|
|
3254
|
+
|
|
3255
|
+
* @example
|
|
3256
|
+
* // Deque peek at both ends
|
|
3257
|
+
* const deque = new Deque<number>([10, 20, 30, 40, 50]);
|
|
3258
|
+
*
|
|
3259
|
+
* // Get first element without removing
|
|
3260
|
+
* const first = deque.at(0);
|
|
3261
|
+
* console.log(first); // 10;
|
|
3262
|
+
*
|
|
3263
|
+
* // Get last element without removing
|
|
3264
|
+
* const last = deque.at(deque.length - 1);
|
|
3265
|
+
* console.log(last); // 50;
|
|
3266
|
+
*
|
|
3267
|
+
* // Length unchanged
|
|
3268
|
+
* console.log(deque.length); // 5;
|
|
3269
|
+
*/
|
|
3270
|
+
/**
|
|
3271
|
+
* Peek at the front element without removing it (alias for `first`).
|
|
3272
|
+
* @remarks Time O(1), Space O(1)
|
|
3273
|
+
* @returns Front element or undefined.
|
|
3274
|
+
*/
|
|
3275
|
+
peek() {
|
|
3276
|
+
return this.first;
|
|
3277
|
+
}
|
|
3278
|
+
/**
|
|
3279
|
+
* Deque peek at both ends
|
|
3280
|
+
|
|
2999
3281
|
|
|
3000
3282
|
|
|
3001
3283
|
* @example
|
|
@@ -3048,6 +3330,13 @@ var Deque = class extends LinearBase {
|
|
|
3048
3330
|
|
|
3049
3331
|
|
|
3050
3332
|
|
|
3333
|
+
|
|
3334
|
+
|
|
3335
|
+
|
|
3336
|
+
|
|
3337
|
+
|
|
3338
|
+
|
|
3339
|
+
|
|
3051
3340
|
|
|
3052
3341
|
|
|
3053
3342
|
|
|
@@ -3111,6 +3400,13 @@ var Deque = class extends LinearBase {
|
|
|
3111
3400
|
|
|
3112
3401
|
|
|
3113
3402
|
|
|
3403
|
+
|
|
3404
|
+
|
|
3405
|
+
|
|
3406
|
+
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
|
|
3114
3410
|
|
|
3115
3411
|
|
|
3116
3412
|
|
|
@@ -3187,6 +3483,13 @@ var Deque = class extends LinearBase {
|
|
|
3187
3483
|
|
|
3188
3484
|
|
|
3189
3485
|
|
|
3486
|
+
|
|
3487
|
+
|
|
3488
|
+
|
|
3489
|
+
|
|
3490
|
+
|
|
3491
|
+
|
|
3492
|
+
|
|
3190
3493
|
|
|
3191
3494
|
|
|
3192
3495
|
|
|
@@ -3250,6 +3553,13 @@ var Deque = class extends LinearBase {
|
|
|
3250
3553
|
|
|
3251
3554
|
|
|
3252
3555
|
|
|
3556
|
+
|
|
3557
|
+
|
|
3558
|
+
|
|
3559
|
+
|
|
3560
|
+
|
|
3561
|
+
|
|
3562
|
+
|
|
3253
3563
|
|
|
3254
3564
|
|
|
3255
3565
|
|
|
@@ -3314,6 +3624,13 @@ var Deque = class extends LinearBase {
|
|
|
3314
3624
|
|
|
3315
3625
|
|
|
3316
3626
|
|
|
3627
|
+
|
|
3628
|
+
|
|
3629
|
+
|
|
3630
|
+
|
|
3631
|
+
|
|
3632
|
+
|
|
3633
|
+
|
|
3317
3634
|
|
|
3318
3635
|
|
|
3319
3636
|
|
|
@@ -3419,6 +3736,13 @@ var Deque = class extends LinearBase {
|
|
|
3419
3736
|
|
|
3420
3737
|
|
|
3421
3738
|
|
|
3739
|
+
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
|
|
3743
|
+
|
|
3744
|
+
|
|
3745
|
+
|
|
3422
3746
|
|
|
3423
3747
|
|
|
3424
3748
|
|
|
@@ -3464,6 +3788,13 @@ var Deque = class extends LinearBase {
|
|
|
3464
3788
|
|
|
3465
3789
|
|
|
3466
3790
|
|
|
3791
|
+
|
|
3792
|
+
|
|
3793
|
+
|
|
3794
|
+
|
|
3795
|
+
|
|
3796
|
+
|
|
3797
|
+
|
|
3467
3798
|
|
|
3468
3799
|
|
|
3469
3800
|
|
|
@@ -3513,6 +3844,13 @@ var Deque = class extends LinearBase {
|
|
|
3513
3844
|
|
|
3514
3845
|
|
|
3515
3846
|
|
|
3847
|
+
|
|
3848
|
+
|
|
3849
|
+
|
|
3850
|
+
|
|
3851
|
+
|
|
3852
|
+
|
|
3853
|
+
|
|
3516
3854
|
|
|
3517
3855
|
|
|
3518
3856
|
|
|
@@ -3713,6 +4051,13 @@ var Deque = class extends LinearBase {
|
|
|
3713
4051
|
|
|
3714
4052
|
|
|
3715
4053
|
|
|
4054
|
+
|
|
4055
|
+
|
|
4056
|
+
|
|
4057
|
+
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
|
|
3716
4061
|
|
|
3717
4062
|
|
|
3718
4063
|
|
|
@@ -3807,6 +4152,68 @@ var Deque = class extends LinearBase {
|
|
|
3807
4152
|
|
|
3808
4153
|
|
|
3809
4154
|
|
|
4155
|
+
|
|
4156
|
+
|
|
4157
|
+
|
|
4158
|
+
|
|
4159
|
+
|
|
4160
|
+
* @example
|
|
4161
|
+
* // Deque for...of iteration and reverse
|
|
4162
|
+
* const deque = new Deque<string>(['A', 'B', 'C', 'D']);
|
|
4163
|
+
*
|
|
4164
|
+
* // Iterate forward
|
|
4165
|
+
* const forward: string[] = [];
|
|
4166
|
+
* for (const item of deque) {
|
|
4167
|
+
* forward.push(item);
|
|
4168
|
+
* }
|
|
4169
|
+
* console.log(forward); // ['A', 'B', 'C', 'D'];
|
|
4170
|
+
*
|
|
4171
|
+
* // Reverse the deque
|
|
4172
|
+
* deque.reverse();
|
|
4173
|
+
* const backward: string[] = [];
|
|
4174
|
+
* for (const item of deque) {
|
|
4175
|
+
* backward.push(item);
|
|
4176
|
+
* }
|
|
4177
|
+
* console.log(backward); // ['D', 'C', 'B', 'A'];
|
|
4178
|
+
*/
|
|
4179
|
+
/**
|
|
4180
|
+
* Find the last value matching a predicate (scans back-to-front).
|
|
4181
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4182
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4183
|
+
* @returns Matching value or undefined.
|
|
4184
|
+
* @example
|
|
4185
|
+
* // Find last matching value
|
|
4186
|
+
* const d = new Deque([1, 2, 3, 4, 5]);
|
|
4187
|
+
* console.log(d.findLast(v => v > 2)); // 5;
|
|
4188
|
+
* console.log(d.findLast(v => v % 2 === 0)); // 4;
|
|
4189
|
+
*/
|
|
4190
|
+
findLast(predicate) {
|
|
4191
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4192
|
+
const val = this.at(i);
|
|
4193
|
+
if (predicate(val, i, this)) return val;
|
|
4194
|
+
}
|
|
4195
|
+
return void 0;
|
|
4196
|
+
}
|
|
4197
|
+
/**
|
|
4198
|
+
* Find the index of the last value matching a predicate (scans back-to-front).
|
|
4199
|
+
* @remarks Provided for familiarity when migrating from Array. Time O(n), Space O(1).
|
|
4200
|
+
* @param predicate - Function called with (value, index, deque).
|
|
4201
|
+
* @returns Matching index, or -1 if not found.
|
|
4202
|
+
* @example
|
|
4203
|
+
* // Find last matching index
|
|
4204
|
+
* const d = new Deque([10, 20, 30, 20, 10]);
|
|
4205
|
+
* console.log(d.findLastIndex(v => v === 20)); // 3;
|
|
4206
|
+
* console.log(d.findLastIndex(v => v === 10)); // 4;
|
|
4207
|
+
*/
|
|
4208
|
+
findLastIndex(predicate) {
|
|
4209
|
+
for (let i = this.length - 1; i >= 0; i--) {
|
|
4210
|
+
if (predicate(this.at(i), i, this)) return i;
|
|
4211
|
+
}
|
|
4212
|
+
return -1;
|
|
4213
|
+
}
|
|
4214
|
+
/**
|
|
4215
|
+
* Deque for...of iteration and reverse
|
|
4216
|
+
|
|
3810
4217
|
|
|
3811
4218
|
* @example
|
|
3812
4219
|
* // Deque for...of iteration and reverse
|
|
@@ -3912,6 +4319,13 @@ var Deque = class extends LinearBase {
|
|
|
3912
4319
|
|
|
3913
4320
|
|
|
3914
4321
|
|
|
4322
|
+
|
|
4323
|
+
|
|
4324
|
+
|
|
4325
|
+
|
|
4326
|
+
|
|
4327
|
+
|
|
4328
|
+
|
|
3915
4329
|
|
|
3916
4330
|
|
|
3917
4331
|
|
|
@@ -3983,6 +4397,13 @@ var Deque = class extends LinearBase {
|
|
|
3983
4397
|
|
|
3984
4398
|
|
|
3985
4399
|
|
|
4400
|
+
|
|
4401
|
+
|
|
4402
|
+
|
|
4403
|
+
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
|
|
3986
4407
|
|
|
3987
4408
|
|
|
3988
4409
|
|
|
@@ -4037,6 +4458,13 @@ var Deque = class extends LinearBase {
|
|
|
4037
4458
|
|
|
4038
4459
|
|
|
4039
4460
|
|
|
4461
|
+
|
|
4462
|
+
|
|
4463
|
+
|
|
4464
|
+
|
|
4465
|
+
|
|
4466
|
+
|
|
4467
|
+
|
|
4040
4468
|
|
|
4041
4469
|
|
|
4042
4470
|
|
|
@@ -4111,6 +4539,13 @@ var Deque = class extends LinearBase {
|
|
|
4111
4539
|
|
|
4112
4540
|
|
|
4113
4541
|
|
|
4542
|
+
|
|
4543
|
+
|
|
4544
|
+
|
|
4545
|
+
|
|
4546
|
+
|
|
4547
|
+
|
|
4548
|
+
|
|
4114
4549
|
|
|
4115
4550
|
|
|
4116
4551
|
|