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
|
@@ -60,50 +60,6 @@ export declare class DoublyLinkedListNode<E = any> extends LinkedListNode<E> {
|
|
|
60
60
|
* 4. High Efficiency in Insertion and Deletion: Adding or removing elements in a linked list does not require moving other elements, making these operations more efficient than in arrays.
|
|
61
61
|
* Caution: Although our linked list classes provide methods such as at, setAt, addAt, and indexOf that are based on array indices, their time complexity, like that of the native Array.lastIndexOf, is 𝑂(𝑛). If you need to use these methods frequently, you might want to consider other data structures, such as Deque or Queue (designed for random access). Similarly, since the native Array.shift method has a time complexity of 𝑂(𝑛), using an array to simulate a queue can be inefficient. In such cases, you should use Queue or Deque, as these data structures leverage deferred array rearrangement, effectively reducing the average time complexity to 𝑂(1).
|
|
62
62
|
* @example
|
|
63
|
-
* // basic DoublyLinkedList creation and push operation
|
|
64
|
-
* // Create a simple DoublyLinkedList with initial values
|
|
65
|
-
* const list = new DoublyLinkedList([1, 2, 3, 4, 5]);
|
|
66
|
-
*
|
|
67
|
-
* // Verify the list maintains insertion order
|
|
68
|
-
* console.log([...list]); // [1, 2, 3, 4, 5];
|
|
69
|
-
*
|
|
70
|
-
* // Check length
|
|
71
|
-
* console.log(list.length); // 5;
|
|
72
|
-
*
|
|
73
|
-
* // Push a new element to the end
|
|
74
|
-
* list.push(6);
|
|
75
|
-
* console.log(list.length); // 6;
|
|
76
|
-
* console.log([...list]); // [1, 2, 3, 4, 5, 6];
|
|
77
|
-
* @example
|
|
78
|
-
* // DoublyLinkedList pop and shift operations
|
|
79
|
-
* const list = new DoublyLinkedList<number>([10, 20, 30, 40, 50]);
|
|
80
|
-
*
|
|
81
|
-
* // Pop removes from the end
|
|
82
|
-
* const last = list.pop();
|
|
83
|
-
* console.log(last); // 50;
|
|
84
|
-
*
|
|
85
|
-
* // Shift removes from the beginning
|
|
86
|
-
* const first = list.shift();
|
|
87
|
-
* console.log(first); // 10;
|
|
88
|
-
*
|
|
89
|
-
* // Verify remaining elements
|
|
90
|
-
* console.log([...list]); // [20, 30, 40];
|
|
91
|
-
* console.log(list.length); // 3;
|
|
92
|
-
* @example
|
|
93
|
-
* // DoublyLinkedList for...of iteration and map operation
|
|
94
|
-
* const list = new DoublyLinkedList<number>([1, 2, 3, 4, 5]);
|
|
95
|
-
*
|
|
96
|
-
* // Iterate through list
|
|
97
|
-
* const doubled = list.map(value => value * 2);
|
|
98
|
-
* console.log(doubled.length); // 5;
|
|
99
|
-
*
|
|
100
|
-
* // Use for...of loop
|
|
101
|
-
* const result: number[] = [];
|
|
102
|
-
* for (const item of list) {
|
|
103
|
-
* result.push(item);
|
|
104
|
-
* }
|
|
105
|
-
* console.log(result); // [1, 2, 3, 4, 5];
|
|
106
|
-
* @example
|
|
107
63
|
* // Browser history
|
|
108
64
|
* const browserHistory = new DoublyLinkedList<string>();
|
|
109
65
|
*
|
|
@@ -153,6 +109,16 @@ export declare class DoublyLinkedListNode<E = any> extends LinkedListNode<E> {
|
|
|
153
109
|
* // Access entry (in real LRU, this would move it to end)
|
|
154
110
|
* const foundEntry = [...cacheList].find(entry => entry.key === 'user:2');
|
|
155
111
|
* console.log(foundEntry?.value); // 'Bob';
|
|
112
|
+
* @example
|
|
113
|
+
* // Find first matching element
|
|
114
|
+
* const list = new DoublyLinkedList<number>([5, 10, 15, 20]);
|
|
115
|
+
* console.log(list.find(n => n >= 12)); // 15;
|
|
116
|
+
* @example
|
|
117
|
+
* // Iterate over elements
|
|
118
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3]);
|
|
119
|
+
* const sum: number[] = [];
|
|
120
|
+
* list.forEach(n => sum.push(n));
|
|
121
|
+
* console.log(sum); // [1, 2, 3];
|
|
156
122
|
*/
|
|
157
123
|
export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase<E, R, DoublyLinkedListNode<E>> {
|
|
158
124
|
protected _equals: (a: E, b: E) => boolean;
|
|
@@ -219,18 +185,146 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
219
185
|
* @remarks Time O(1), Space O(1)
|
|
220
186
|
* @param elementOrNode - Element or node to append.
|
|
221
187
|
* @returns True when appended.
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
* @example
|
|
220
|
+
* // basic DoublyLinkedList creation and push operation
|
|
221
|
+
* // Create a simple DoublyLinkedList with initial values
|
|
222
|
+
* const list = new DoublyLinkedList([1, 2, 3, 4, 5]);
|
|
223
|
+
*
|
|
224
|
+
* // Verify the list maintains insertion order
|
|
225
|
+
* console.log([...list]); // [1, 2, 3, 4, 5];
|
|
226
|
+
*
|
|
227
|
+
* // Check length
|
|
228
|
+
* console.log(list.length); // 5;
|
|
229
|
+
*
|
|
230
|
+
* // Push a new element to the end
|
|
231
|
+
* list.push(6);
|
|
232
|
+
* console.log(list.length); // 6;
|
|
233
|
+
* console.log([...list]); // [1, 2, 3, 4, 5, 6];
|
|
222
234
|
*/
|
|
223
235
|
push(elementOrNode: E | DoublyLinkedListNode<E>): boolean;
|
|
224
236
|
/**
|
|
225
237
|
* Remove and return the tail element.
|
|
226
238
|
* @remarks Time O(1), Space O(1)
|
|
227
239
|
* @returns Removed element or undefined.
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
* @example
|
|
272
|
+
* // DoublyLinkedList pop and shift operations
|
|
273
|
+
* const list = new DoublyLinkedList<number>([10, 20, 30, 40, 50]);
|
|
274
|
+
*
|
|
275
|
+
* // Pop removes from the end
|
|
276
|
+
* const last = list.pop();
|
|
277
|
+
* console.log(last); // 50;
|
|
278
|
+
*
|
|
279
|
+
* // Shift removes from the beginning
|
|
280
|
+
* const first = list.shift();
|
|
281
|
+
* console.log(first); // 10;
|
|
282
|
+
*
|
|
283
|
+
* // Verify remaining elements
|
|
284
|
+
* console.log([...list]); // [20, 30, 40];
|
|
285
|
+
* console.log(list.length); // 3;
|
|
228
286
|
*/
|
|
229
287
|
pop(): E | undefined;
|
|
230
288
|
/**
|
|
231
289
|
* Remove and return the head element.
|
|
232
290
|
* @remarks Time O(1), Space O(1)
|
|
233
291
|
* @returns Removed element or undefined.
|
|
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
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
* @example
|
|
324
|
+
* // Remove from the front
|
|
325
|
+
* const list = new DoublyLinkedList<number>([10, 20, 30]);
|
|
326
|
+
* console.log(list.shift()); // 10;
|
|
327
|
+
* console.log(list.first); // 20;
|
|
234
328
|
*/
|
|
235
329
|
shift(): E | undefined;
|
|
236
330
|
/**
|
|
@@ -238,6 +332,42 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
238
332
|
* @remarks Time O(1), Space O(1)
|
|
239
333
|
* @param elementOrNode - Element or node to prepend.
|
|
240
334
|
* @returns True when prepended.
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
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
|
+
* @example
|
|
367
|
+
* // Add to the front
|
|
368
|
+
* const list = new DoublyLinkedList<number>([2, 3]);
|
|
369
|
+
* list.unshift(1);
|
|
370
|
+
* console.log([...list]); // [1, 2, 3];
|
|
241
371
|
*/
|
|
242
372
|
unshift(elementOrNode: E | DoublyLinkedListNode<E>): boolean;
|
|
243
373
|
/**
|
|
@@ -259,6 +389,42 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
259
389
|
* @remarks Time O(N), Space O(1)
|
|
260
390
|
* @param index - Zero-based index.
|
|
261
391
|
* @returns Element or undefined.
|
|
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
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
* @example
|
|
424
|
+
* // Access by index
|
|
425
|
+
* const list = new DoublyLinkedList<string>(['a', 'b', 'c']);
|
|
426
|
+
* console.log(list.at(1)); // 'b';
|
|
427
|
+
* console.log(list.at(2)); // 'c';
|
|
262
428
|
*/
|
|
263
429
|
at(index: number): E | undefined;
|
|
264
430
|
/**
|
|
@@ -266,6 +432,38 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
266
432
|
* @remarks Time O(N), Space O(1)
|
|
267
433
|
* @param index - Zero-based index.
|
|
268
434
|
* @returns Node or undefined.
|
|
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
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
* @example
|
|
464
|
+
* // Get node at index
|
|
465
|
+
* const list = new DoublyLinkedList<string>(['a', 'b', 'c']);
|
|
466
|
+
* console.log(list.getNodeAt(1)?.value); // 'b';
|
|
269
467
|
*/
|
|
270
468
|
getNodeAt(index: number): DoublyLinkedListNode<E> | undefined;
|
|
271
469
|
/**
|
|
@@ -281,6 +479,39 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
281
479
|
* @param index - Zero-based index.
|
|
282
480
|
* @param newElementOrNode - Element or node to insert.
|
|
283
481
|
* @returns True if inserted.
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
* @example
|
|
511
|
+
* // Insert at position
|
|
512
|
+
* const list = new DoublyLinkedList<number>([1, 3]);
|
|
513
|
+
* list.addAt(1, 2);
|
|
514
|
+
* console.log(list.toArray()); // [1, 2, 3];
|
|
284
515
|
*/
|
|
285
516
|
addAt(index: number, newElementOrNode: E | DoublyLinkedListNode<E>): boolean;
|
|
286
517
|
/**
|
|
@@ -312,6 +543,39 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
312
543
|
* @remarks Time O(N), Space O(1)
|
|
313
544
|
* @param index - Zero-based index.
|
|
314
545
|
* @returns Removed element or undefined.
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
* @example
|
|
575
|
+
* // Remove by index
|
|
576
|
+
* const list = new DoublyLinkedList<string>(['a', 'b', 'c']);
|
|
577
|
+
* list.deleteAt(1);
|
|
578
|
+
* console.log(list.toArray()); // ['a', 'c'];
|
|
315
579
|
*/
|
|
316
580
|
deleteAt(index: number): E | undefined;
|
|
317
581
|
/**
|
|
@@ -319,18 +583,117 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
319
583
|
* @remarks Time O(N), Space O(1)
|
|
320
584
|
* @param [elementOrNode] - Element or node to remove.
|
|
321
585
|
* @returns True if removed.
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
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
|
+
* @example
|
|
615
|
+
* // Remove first occurrence
|
|
616
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3, 2]);
|
|
617
|
+
* list.delete(2);
|
|
618
|
+
* console.log(list.toArray()); // [1, 3, 2];
|
|
322
619
|
*/
|
|
323
620
|
delete(elementOrNode: E | DoublyLinkedListNode<E> | undefined): boolean;
|
|
324
621
|
/**
|
|
325
622
|
* Check whether the list is empty.
|
|
326
623
|
* @remarks Time O(1), Space O(1)
|
|
327
624
|
* @returns True if length is 0.
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
* @example
|
|
655
|
+
* // Check empty
|
|
656
|
+
* console.log(new DoublyLinkedList().isEmpty()); // true;
|
|
328
657
|
*/
|
|
329
658
|
isEmpty(): boolean;
|
|
330
659
|
/**
|
|
331
660
|
* Remove all nodes and reset length.
|
|
332
661
|
* @remarks Time O(N), Space O(1)
|
|
333
662
|
* @returns void
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
* @example
|
|
693
|
+
* // Remove all
|
|
694
|
+
* const list = new DoublyLinkedList<number>([1, 2]);
|
|
695
|
+
* list.clear();
|
|
696
|
+
* console.log(list.isEmpty()); // true;
|
|
334
697
|
*/
|
|
335
698
|
clear(): void;
|
|
336
699
|
/**
|
|
@@ -338,6 +701,39 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
338
701
|
* @remarks Time O(N), Space O(1)
|
|
339
702
|
* @param elementNodeOrPredicate - Element, node, or predicate to match.
|
|
340
703
|
* @returns Matched value or undefined.
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
* @example
|
|
733
|
+
* // Search with predicate
|
|
734
|
+
* const list = new DoublyLinkedList<number>([10, 20, 30]);
|
|
735
|
+
* const found = list.search(node => node.value > 15);
|
|
736
|
+
* console.log(found); // 20;
|
|
341
737
|
*/
|
|
342
738
|
search(elementNodeOrPredicate: E | DoublyLinkedListNode<E> | ((node: DoublyLinkedListNode<E>) => boolean)): E | undefined;
|
|
343
739
|
/**
|
|
@@ -345,12 +741,82 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
345
741
|
* @remarks Time O(N), Space O(1)
|
|
346
742
|
* @param elementNodeOrPredicate - Element, node, or predicate to match.
|
|
347
743
|
* @returns Matched value or undefined.
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
* @example
|
|
773
|
+
* // Find value scanning from tail
|
|
774
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
|
|
775
|
+
* // getBackward scans from tail to head, returns first match
|
|
776
|
+
* const found = list.getBackward(node => node.value < 4);
|
|
777
|
+
* console.log(found); // 3;
|
|
348
778
|
*/
|
|
349
779
|
getBackward(elementNodeOrPredicate: E | DoublyLinkedListNode<E> | ((node: DoublyLinkedListNode<E>) => boolean)): E | undefined;
|
|
350
780
|
/**
|
|
351
781
|
* Reverse the list in place.
|
|
352
782
|
* @remarks Time O(N), Space O(1)
|
|
353
783
|
* @returns This list.
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
* @example
|
|
816
|
+
* // Reverse in-place
|
|
817
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3]);
|
|
818
|
+
* list.reverse();
|
|
819
|
+
* console.log([...list]); // [3, 2, 1];
|
|
354
820
|
*/
|
|
355
821
|
reverse(): this;
|
|
356
822
|
/**
|
|
@@ -364,6 +830,41 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
364
830
|
* Deep clone this list (values are copied by reference).
|
|
365
831
|
* @remarks Time O(N), Space O(N)
|
|
366
832
|
* @returns A new list with the same element sequence.
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
* @example
|
|
863
|
+
* // Deep copy
|
|
864
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3]);
|
|
865
|
+
* const copy = list.clone();
|
|
866
|
+
* copy.pop();
|
|
867
|
+
* console.log(list.length); // 3;
|
|
367
868
|
*/
|
|
368
869
|
clone(): this;
|
|
369
870
|
/**
|
|
@@ -372,8 +873,44 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
372
873
|
* @param callback - Predicate (value, index, list) → boolean to keep value.
|
|
373
874
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
374
875
|
* @returns A new list with kept values.
|
|
375
|
-
|
|
376
|
-
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
* @example
|
|
908
|
+
* // Filter elements
|
|
909
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3, 4, 5]);
|
|
910
|
+
* const evens = list.filter(n => n % 2 === 0);
|
|
911
|
+
* console.log([...evens]); // [2, 4];
|
|
912
|
+
*/
|
|
913
|
+
filter(callback: ElementCallback<E, R, boolean>, thisArg?: unknown): this;
|
|
377
914
|
/**
|
|
378
915
|
* Map values into a new list of the same class.
|
|
379
916
|
* @remarks Time O(N), Space O(N)
|
|
@@ -381,7 +918,7 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
381
918
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
382
919
|
* @returns A new list with mapped values.
|
|
383
920
|
*/
|
|
384
|
-
mapSame(callback: ElementCallback<E, R, E>, thisArg?:
|
|
921
|
+
mapSame(callback: ElementCallback<E, R, E>, thisArg?: unknown): this;
|
|
385
922
|
/**
|
|
386
923
|
* Map values into a new list (possibly different element type).
|
|
387
924
|
* @remarks Time O(N), Space O(N)
|
|
@@ -391,8 +928,53 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
|
|
|
391
928
|
* @param [options] - Options for the output list (e.g., maxLen, toElementFn).
|
|
392
929
|
* @param [thisArg] - Value for `this` inside the callback.
|
|
393
930
|
* @returns A new DoublyLinkedList with mapped values.
|
|
394
|
-
|
|
395
|
-
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
* @example
|
|
963
|
+
* // DoublyLinkedList for...of iteration and map operation
|
|
964
|
+
* const list = new DoublyLinkedList<number>([1, 2, 3, 4, 5]);
|
|
965
|
+
*
|
|
966
|
+
* // Iterate through list
|
|
967
|
+
* const doubled = list.map(value => value * 2);
|
|
968
|
+
* console.log(doubled.length); // 5;
|
|
969
|
+
*
|
|
970
|
+
* // Use for...of loop
|
|
971
|
+
* const result: number[] = [];
|
|
972
|
+
* for (const item of list) {
|
|
973
|
+
* result.push(item);
|
|
974
|
+
* }
|
|
975
|
+
* console.log(result); // [1, 2, 3, 4, 5];
|
|
976
|
+
*/
|
|
977
|
+
map<EM, RM>(callback: ElementCallback<E, R, EM>, options?: DoublyLinkedListOptions<EM, RM>, thisArg?: unknown): DoublyLinkedList<EM, RM>;
|
|
396
978
|
/**
|
|
397
979
|
* (Protected) Create or return a node for the given input (node or raw element).
|
|
398
980
|
* @remarks Time O(1), Space O(1)
|