data-structure-typed 2.4.5 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
- package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
- package/CHANGELOG.md +3 -1
- package/README.md +78 -31
- package/dist/cjs/binary-tree.cjs +23698 -0
- package/dist/cjs/graph.cjs +5236 -0
- package/dist/cjs/hash.cjs +1262 -0
- package/dist/cjs/heap.cjs +1540 -0
- package/dist/cjs/index.cjs +24509 -2899
- package/dist/cjs/linked-list.cjs +4370 -0
- package/dist/cjs/matrix.cjs +1042 -0
- package/dist/cjs/priority-queue.cjs +1314 -0
- package/dist/cjs/queue.cjs +4090 -0
- package/dist/cjs/stack.cjs +861 -0
- package/dist/cjs/trie.cjs +1173 -0
- package/dist/cjs-legacy/binary-tree.cjs +23730 -0
- package/dist/cjs-legacy/graph.cjs +5234 -0
- package/dist/cjs-legacy/hash.cjs +1262 -0
- package/dist/cjs-legacy/heap.cjs +1537 -0
- package/dist/cjs-legacy/index.cjs +32555 -10936
- package/dist/cjs-legacy/linked-list.cjs +4376 -0
- package/dist/cjs-legacy/matrix.cjs +1045 -0
- package/dist/cjs-legacy/priority-queue.cjs +1312 -0
- package/dist/cjs-legacy/queue.cjs +4088 -0
- package/dist/cjs-legacy/stack.cjs +861 -0
- package/dist/cjs-legacy/trie.cjs +1172 -0
- package/dist/esm/binary-tree.mjs +23683 -0
- package/dist/esm/graph.mjs +5223 -0
- package/dist/esm/hash.mjs +1259 -0
- package/dist/esm/heap.mjs +1534 -0
- package/dist/esm/index.mjs +24507 -2898
- package/dist/esm/linked-list.mjs +4363 -0
- package/dist/esm/matrix.mjs +1038 -0
- package/dist/esm/priority-queue.mjs +1310 -0
- package/dist/esm/queue.mjs +4086 -0
- package/dist/esm/stack.mjs +859 -0
- package/dist/esm/trie.mjs +1170 -0
- package/dist/esm-legacy/binary-tree.mjs +23715 -0
- package/dist/esm-legacy/graph.mjs +5221 -0
- package/dist/esm-legacy/hash.mjs +1259 -0
- package/dist/esm-legacy/heap.mjs +1531 -0
- package/dist/esm-legacy/index.mjs +32553 -10935
- package/dist/esm-legacy/linked-list.mjs +4369 -0
- package/dist/esm-legacy/matrix.mjs +1041 -0
- package/dist/esm-legacy/priority-queue.mjs +1308 -0
- package/dist/esm-legacy/queue.mjs +4084 -0
- package/dist/esm-legacy/stack.mjs +859 -0
- package/dist/esm-legacy/trie.mjs +1169 -0
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +368 -51
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +473 -147
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +931 -80
- package/dist/types/data-structures/binary-tree/bst.d.ts +792 -29
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +592 -32
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +320 -135
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +3662 -6
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3487 -201
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2778 -65
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +3414 -6
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +419 -47
- package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
- package/dist/types/data-structures/graph/undirected-graph.d.ts +384 -59
- package/dist/types/data-structures/hash/hash-map.d.ts +462 -89
- package/dist/types/data-structures/heap/heap.d.ts +567 -99
- package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
- package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +631 -49
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +581 -68
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +775 -12
- package/dist/types/data-structures/matrix/matrix.d.ts +491 -0
- package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
- package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
- package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
- package/dist/types/data-structures/queue/deque.d.ts +578 -71
- package/dist/types/data-structures/queue/queue.d.ts +451 -42
- package/dist/types/data-structures/stack/stack.d.ts +374 -32
- package/dist/types/data-structures/trie/trie.d.ts +458 -48
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/data-structure-typed.js +32432 -10808
- package/dist/umd/data-structure-typed.min.js +10 -4
- package/docs-site-docusaurus/README.md +41 -0
- package/docs-site-docusaurus/docs/api/README.md +52 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
- package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
- package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
- package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
- package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
- package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
- package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
- package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
- package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
- package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
- package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
- package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
- package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
- package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
- package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
- package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
- package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
- package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
- package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
- package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
- package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
- package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
- package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
- package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
- package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
- package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
- package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
- package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
- package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
- package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
- package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
- package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
- package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
- package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
- package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
- package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
- package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
- package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
- package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
- package/docs-site-docusaurus/docs/guide/guides.md +611 -0
- package/docs-site-docusaurus/docs/guide/installation.md +60 -0
- package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
- package/docs-site-docusaurus/docs/guide/overview.md +638 -0
- package/docs-site-docusaurus/docs/guide/performance.md +833 -0
- package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
- package/docs-site-docusaurus/docusaurus.config.ts +159 -0
- package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
- package/docs-site-docusaurus/package-lock.json +18667 -0
- package/docs-site-docusaurus/package.json +50 -0
- package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
- package/docs-site-docusaurus/sidebars.ts +23 -0
- package/docs-site-docusaurus/sort-protected.mjs +87 -0
- package/docs-site-docusaurus/src/css/custom.css +96 -0
- package/docs-site-docusaurus/src/pages/index.module.css +13 -0
- package/docs-site-docusaurus/src/pages/index.tsx +71 -0
- package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
- package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
- package/docs-site-docusaurus/static/.nojekyll +0 -0
- package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
- package/docs-site-docusaurus/static/img/favicon.ico +0 -0
- package/docs-site-docusaurus/static/img/favicon.png +0 -0
- package/docs-site-docusaurus/static/img/logo-180.png +0 -0
- package/docs-site-docusaurus/static/img/logo.jpg +0 -0
- package/docs-site-docusaurus/static/img/logo.png +0 -0
- package/docs-site-docusaurus/static/img/logo.svg +1 -0
- package/docs-site-docusaurus/static/img/og-image.png +0 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
- package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
- package/docs-site-docusaurus/static/robots.txt +4 -0
- package/docs-site-docusaurus/typedoc.json +23 -0
- package/package.json +109 -12
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-element-base.ts +4 -5
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +386 -51
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
- package/src/data-structures/binary-tree/binary-tree.ts +956 -81
- package/src/data-structures/binary-tree/bst.ts +840 -35
- package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
- package/src/data-structures/binary-tree/segment-tree.ts +498 -249
- package/src/data-structures/binary-tree/tree-map.ts +3784 -7
- package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
- package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
- package/src/data-structures/binary-tree/tree-set.ts +3531 -10
- package/src/data-structures/graph/abstract-graph.ts +4 -4
- package/src/data-structures/graph/directed-graph.ts +429 -47
- package/src/data-structures/graph/map-graph.ts +59 -1
- package/src/data-structures/graph/undirected-graph.ts +393 -59
- package/src/data-structures/hash/hash-map.ts +476 -92
- package/src/data-structures/heap/heap.ts +581 -99
- package/src/data-structures/heap/max-heap.ts +46 -0
- package/src/data-structures/heap/min-heap.ts +59 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
- package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
- package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
- package/src/data-structures/matrix/matrix.ts +584 -12
- package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
- package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
- package/src/data-structures/priority-queue/priority-queue.ts +60 -0
- package/src/data-structures/queue/deque.ts +592 -70
- package/src/data-structures/queue/queue.ts +463 -42
- package/src/data-structures/stack/stack.ts +384 -32
- package/src/data-structures/trie/trie.ts +470 -48
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
- package/vercel.json +6 -0
- package/dist/leetcode/avl-tree-counter.mjs +0 -2957
- package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
- package/dist/leetcode/avl-tree.mjs +0 -2720
- package/dist/leetcode/binary-tree.mjs +0 -1594
- package/dist/leetcode/bst.mjs +0 -2398
- package/dist/leetcode/deque.mjs +0 -683
- package/dist/leetcode/directed-graph.mjs +0 -1733
- package/dist/leetcode/doubly-linked-list.mjs +0 -709
- package/dist/leetcode/hash-map.mjs +0 -493
- package/dist/leetcode/heap.mjs +0 -542
- package/dist/leetcode/max-heap.mjs +0 -375
- package/dist/leetcode/max-priority-queue.mjs +0 -383
- package/dist/leetcode/min-heap.mjs +0 -363
- package/dist/leetcode/min-priority-queue.mjs +0 -371
- package/dist/leetcode/priority-queue.mjs +0 -363
- package/dist/leetcode/queue.mjs +0 -943
- package/dist/leetcode/red-black-tree.mjs +0 -2765
- package/dist/leetcode/singly-linked-list.mjs +0 -754
- package/dist/leetcode/stack.mjs +0 -217
- package/dist/leetcode/tree-counter.mjs +0 -3039
- package/dist/leetcode/tree-multi-map.mjs +0 -2913
- package/dist/leetcode/trie.mjs +0 -413
- package/dist/leetcode/undirected-graph.mjs +0 -1650
|
@@ -21,48 +21,6 @@ import { LinearBase } from '../base/linear-base';
|
|
|
21
21
|
* 6. Breadth-First Search (BFS): In traversal algorithms for graphs and trees, queues store elements that are to be visited.
|
|
22
22
|
* 7. Real-time Queuing: Like queuing systems in banks or supermarkets.
|
|
23
23
|
* @example
|
|
24
|
-
* // basic Queue creation and push operation
|
|
25
|
-
* // Create a simple Queue with initial values
|
|
26
|
-
* const queue = new Queue([1, 2, 3, 4, 5]);
|
|
27
|
-
*
|
|
28
|
-
* // Verify the queue maintains insertion order
|
|
29
|
-
* console.log([...queue]); // [1, 2, 3, 4, 5];
|
|
30
|
-
*
|
|
31
|
-
* // Check length
|
|
32
|
-
* console.log(queue.length); // 5;
|
|
33
|
-
* @example
|
|
34
|
-
* // Queue shift and peek operations
|
|
35
|
-
* const queue = new Queue<number>([10, 20, 30, 40]);
|
|
36
|
-
*
|
|
37
|
-
* // Peek at the front element without removing it
|
|
38
|
-
* console.log(queue.first); // 10;
|
|
39
|
-
*
|
|
40
|
-
* // Remove and get the first element (FIFO)
|
|
41
|
-
* const first = queue.shift();
|
|
42
|
-
* console.log(first); // 10;
|
|
43
|
-
*
|
|
44
|
-
* // Verify remaining elements and length decreased
|
|
45
|
-
* console.log([...queue]); // [20, 30, 40];
|
|
46
|
-
* console.log(queue.length); // 3;
|
|
47
|
-
* @example
|
|
48
|
-
* // Queue for...of iteration and isEmpty check
|
|
49
|
-
* const queue = new Queue<string>(['A', 'B', 'C', 'D']);
|
|
50
|
-
*
|
|
51
|
-
* const elements: string[] = [];
|
|
52
|
-
* for (const item of queue) {
|
|
53
|
-
* elements.push(item);
|
|
54
|
-
* }
|
|
55
|
-
*
|
|
56
|
-
* // Verify all elements are iterated in order
|
|
57
|
-
* console.log(elements); // ['A', 'B', 'C', 'D'];
|
|
58
|
-
*
|
|
59
|
-
* // Process all elements
|
|
60
|
-
* while (queue.length > 0) {
|
|
61
|
-
* queue.shift();
|
|
62
|
-
* }
|
|
63
|
-
*
|
|
64
|
-
* console.log(queue.length); // 0;
|
|
65
|
-
* @example
|
|
66
24
|
* // Queue as message broker for event processing
|
|
67
25
|
* interface Message {
|
|
68
26
|
* id: string;
|
|
@@ -123,6 +81,10 @@ import { LinearBase } from '../base/linear-base';
|
|
|
123
81
|
*
|
|
124
82
|
* // Queue should be empty after processing all messages
|
|
125
83
|
* console.log(messageQueue.length); // 0;
|
|
84
|
+
* @example
|
|
85
|
+
* // Convert queue to array
|
|
86
|
+
* const q = new Queue<number>([10, 20, 30]);
|
|
87
|
+
* console.log(q.toArray()); // [10, 20, 30];
|
|
126
88
|
*/
|
|
127
89
|
export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
128
90
|
/**
|
|
@@ -165,12 +127,86 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
165
127
|
* Get the number of elements currently in the queue.
|
|
166
128
|
* @remarks Time O(1), Space O(1)
|
|
167
129
|
* @returns Current length.
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
* @example
|
|
162
|
+
* // Track queue length
|
|
163
|
+
* const q = new Queue<number>();
|
|
164
|
+
* console.log(q.length); // 0;
|
|
165
|
+
* q.push(1);
|
|
166
|
+
* q.push(2);
|
|
167
|
+
* console.log(q.length); // 2;
|
|
168
168
|
*/
|
|
169
169
|
get length(): number;
|
|
170
170
|
/**
|
|
171
171
|
* Get the first element (front) without removing it.
|
|
172
172
|
* @remarks Time O(1), Space O(1)
|
|
173
173
|
* @returns Front element or undefined.
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
* @example
|
|
206
|
+
* // View the front element
|
|
207
|
+
* const q = new Queue<string>(['first', 'second', 'third']);
|
|
208
|
+
* console.log(q.first); // 'first';
|
|
209
|
+
* console.log(q.length); // 3;
|
|
174
210
|
*/
|
|
175
211
|
get first(): E | undefined;
|
|
176
212
|
/**
|
|
@@ -191,6 +227,55 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
191
227
|
* Check whether the queue is empty.
|
|
192
228
|
* @remarks Time O(1), Space O(1)
|
|
193
229
|
* @returns True if length is 0.
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
* @example
|
|
262
|
+
* // Queue for...of iteration and isEmpty check
|
|
263
|
+
* const queue = new Queue<string>(['A', 'B', 'C', 'D']);
|
|
264
|
+
*
|
|
265
|
+
* const elements: string[] = [];
|
|
266
|
+
* for (const item of queue) {
|
|
267
|
+
* elements.push(item);
|
|
268
|
+
* }
|
|
269
|
+
*
|
|
270
|
+
* // Verify all elements are iterated in order
|
|
271
|
+
* console.log(elements); // ['A', 'B', 'C', 'D'];
|
|
272
|
+
*
|
|
273
|
+
* // Process all elements
|
|
274
|
+
* while (queue.length > 0) {
|
|
275
|
+
* queue.shift();
|
|
276
|
+
* }
|
|
277
|
+
*
|
|
278
|
+
* console.log(queue.length); // 0;
|
|
194
279
|
*/
|
|
195
280
|
isEmpty(): boolean;
|
|
196
281
|
/**
|
|
@@ -198,6 +283,47 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
198
283
|
* @remarks Time O(1), Space O(1)
|
|
199
284
|
* @param element - Element to enqueue.
|
|
200
285
|
* @returns True on success.
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
* @example
|
|
318
|
+
* // basic Queue creation and push operation
|
|
319
|
+
* // Create a simple Queue with initial values
|
|
320
|
+
* const queue = new Queue([1, 2, 3, 4, 5]);
|
|
321
|
+
*
|
|
322
|
+
* // Verify the queue maintains insertion order
|
|
323
|
+
* console.log([...queue]); // [1, 2, 3, 4, 5];
|
|
324
|
+
*
|
|
325
|
+
* // Check length
|
|
326
|
+
* console.log(queue.length); // 5;
|
|
201
327
|
*/
|
|
202
328
|
push(element: E): boolean;
|
|
203
329
|
/**
|
|
@@ -211,6 +337,51 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
211
337
|
* Dequeue one element from the front (amortized via offset).
|
|
212
338
|
* @remarks Time O(1) amortized, Space O(1)
|
|
213
339
|
* @returns Removed element or undefined.
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
* @example
|
|
372
|
+
* // Queue shift and peek operations
|
|
373
|
+
* const queue = new Queue<number>([10, 20, 30, 40]);
|
|
374
|
+
*
|
|
375
|
+
* // Peek at the front element without removing it
|
|
376
|
+
* console.log(queue.first); // 10;
|
|
377
|
+
*
|
|
378
|
+
* // Remove and get the first element (FIFO)
|
|
379
|
+
* const first = queue.shift();
|
|
380
|
+
* console.log(first); // 10;
|
|
381
|
+
*
|
|
382
|
+
* // Verify remaining elements and length decreased
|
|
383
|
+
* console.log([...queue]); // [20, 30, 40];
|
|
384
|
+
* console.log(queue.length); // 3;
|
|
214
385
|
*/
|
|
215
386
|
shift(): E | undefined;
|
|
216
387
|
/**
|
|
@@ -218,6 +389,39 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
218
389
|
* @remarks Time O(N), Space O(1)
|
|
219
390
|
* @param element - Element to remove (strict equality via Object.is).
|
|
220
391
|
* @returns True if an element was removed.
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
* @example
|
|
421
|
+
* // Remove specific element
|
|
422
|
+
* const q = new Queue<number>([1, 2, 3, 2]);
|
|
423
|
+
* q.delete(2);
|
|
424
|
+
* console.log(q.length); // 3;
|
|
221
425
|
*/
|
|
222
426
|
delete(element: E): boolean;
|
|
223
427
|
/**
|
|
@@ -225,6 +429,39 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
225
429
|
* @remarks Time O(1), Space O(1)
|
|
226
430
|
* @param index - Zero-based index from the front.
|
|
227
431
|
* @returns Element or undefined.
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
* @example
|
|
461
|
+
* // Access element by index
|
|
462
|
+
* const q = new Queue<string>(['a', 'b', 'c']);
|
|
463
|
+
* console.log(q.at(0)); // 'a';
|
|
464
|
+
* console.log(q.at(2)); // 'c';
|
|
228
465
|
*/
|
|
229
466
|
at(index: number): E | undefined;
|
|
230
467
|
/**
|
|
@@ -260,12 +497,81 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
260
497
|
* Remove all elements and reset offset.
|
|
261
498
|
* @remarks Time O(1), Space O(1)
|
|
262
499
|
* @returns void
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
* @example
|
|
530
|
+
* // Remove all elements
|
|
531
|
+
* const q = new Queue<number>([1, 2, 3]);
|
|
532
|
+
* q.clear();
|
|
533
|
+
* console.log(q.length); // 0;
|
|
263
534
|
*/
|
|
264
535
|
clear(): void;
|
|
265
536
|
/**
|
|
266
537
|
* Compact storage by discarding consumed head elements.
|
|
267
538
|
* @remarks Time O(N), Space O(N)
|
|
268
539
|
* @returns True when compaction performed.
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
* @example
|
|
569
|
+
* // Reclaim unused memory
|
|
570
|
+
* const q = new Queue<number>([1, 2, 3, 4, 5]);
|
|
571
|
+
* q.shift();
|
|
572
|
+
* q.shift();
|
|
573
|
+
* q.compact();
|
|
574
|
+
* console.log(q.length); // 3;
|
|
269
575
|
*/
|
|
270
576
|
compact(): boolean;
|
|
271
577
|
/**
|
|
@@ -281,6 +587,42 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
281
587
|
* Deep clone this queue and its parameters.
|
|
282
588
|
* @remarks Time O(N), Space O(N)
|
|
283
589
|
* @returns A new queue with the same content and options.
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
* @example
|
|
620
|
+
* // Create independent copy
|
|
621
|
+
* const q = new Queue<number>([1, 2, 3]);
|
|
622
|
+
* const copy = q.clone();
|
|
623
|
+
* copy.shift();
|
|
624
|
+
* console.log(q.length); // 3;
|
|
625
|
+
* console.log(copy.length); // 2;
|
|
284
626
|
*/
|
|
285
627
|
clone(): this;
|
|
286
628
|
/**
|
|
@@ -289,6 +631,40 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
289
631
|
* @param predicate - Predicate (element, index, queue) → boolean to keep element.
|
|
290
632
|
* @param [thisArg] - Value for `this` inside the predicate.
|
|
291
633
|
* @returns A new queue with kept elements.
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
* @example
|
|
664
|
+
* // Filter elements
|
|
665
|
+
* const q = new Queue<number>([1, 2, 3, 4, 5]);
|
|
666
|
+
* const evens = q.filter(x => x % 2 === 0);
|
|
667
|
+
* console.log(evens.length); // 2;
|
|
292
668
|
*/
|
|
293
669
|
filter(predicate: ElementCallback<E, R, boolean>, thisArg?: unknown): this;
|
|
294
670
|
/**
|
|
@@ -300,6 +676,39 @@ export declare class Queue<E = any, R = any> extends LinearBase<E, R> {
|
|
|
300
676
|
* @param [options] - Options for the output queue (e.g., toElementFn, maxLen, autoCompactRatio).
|
|
301
677
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
302
678
|
* @returns A new Queue with mapped elements.
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
* @example
|
|
708
|
+
* // Transform elements
|
|
709
|
+
* const q = new Queue<number>([1, 2, 3]);
|
|
710
|
+
* const doubled = q.map(x => x * 2);
|
|
711
|
+
* console.log(doubled.toArray()); // [2, 4, 6];
|
|
303
712
|
*/
|
|
304
713
|
map<EM, RM>(callback: ElementCallback<E, R, EM>, options?: QueueOptions<EM, RM>, thisArg?: unknown): Queue<EM, RM>;
|
|
305
714
|
/**
|