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/SPECIFICATION.md
CHANGED
|
@@ -101,21 +101,35 @@
|
|
|
101
101
|
|
|
102
102
|
```typescript
|
|
103
103
|
// Add operations
|
|
104
|
-
structure.push(element: T):
|
|
105
|
-
structure.unshift(element: T):
|
|
104
|
+
structure.push(element: T): boolean // Add to end
|
|
105
|
+
structure.unshift(element: T): boolean // Add to start
|
|
106
106
|
|
|
107
107
|
// Remove operations
|
|
108
108
|
structure.pop(): T | undefined // Remove from end
|
|
109
109
|
structure.shift(): T | undefined // Remove from start
|
|
110
|
+
structure.delete(element: T): boolean // Remove first match
|
|
111
|
+
structure.deleteAt(index: number): T | undefined // Remove at index
|
|
112
|
+
structure.deleteWhere(pred: Function): boolean // Remove first match by predicate
|
|
110
113
|
|
|
111
114
|
// Peek operations (read without removing)
|
|
112
|
-
structure.peek(): T | undefined // View
|
|
113
|
-
structure.
|
|
114
|
-
structure.
|
|
115
|
+
structure.peek(): T | undefined // View front element (Queue/Deque/Stack)
|
|
116
|
+
structure.first: T | undefined // View first element (getter)
|
|
117
|
+
structure.last: T | undefined // View last element (getter)
|
|
118
|
+
|
|
119
|
+
// Search (back-to-front)
|
|
120
|
+
structure.findLast(pred: Function): T | undefined // Deque, DoublyLinkedList
|
|
121
|
+
structure.findLastIndex(pred: Function): number // Deque, DoublyLinkedList
|
|
122
|
+
|
|
123
|
+
// Array-compatible (migration helpers)
|
|
124
|
+
structure.includes(element: T): boolean // Alias for has()
|
|
125
|
+
structure.entries(): IterableIterator<[number, T]> // [index, value] pairs
|
|
126
|
+
structure.keys(): IterableIterator<number> // Index iterator
|
|
127
|
+
structure.toReversed(): this // Non-mutating reverse (new instance)
|
|
115
128
|
|
|
116
129
|
// Size and queries
|
|
117
|
-
structure.size: number // Element count
|
|
118
|
-
structure.
|
|
130
|
+
structure.size: number // Element count (Stack, Trie, etc.)
|
|
131
|
+
structure.length: number // Element count (Queue, Deque, LinkedList)
|
|
132
|
+
structure.isEmpty(): boolean // Check if empty
|
|
119
133
|
```
|
|
120
134
|
|
|
121
135
|
### Tree & Map API
|
|
@@ -124,8 +138,8 @@ structure.isEmpty: boolean // Check if empty
|
|
|
124
138
|
|
|
125
139
|
```typescript
|
|
126
140
|
// Add/update
|
|
127
|
-
structure.set(key: K, value: V): this
|
|
128
|
-
structure.setMany(entries: [K, V][]):
|
|
141
|
+
structure.set(key: K, value: V): this // Returns this for chaining (Map/HashMap)
|
|
142
|
+
structure.setMany(entries: [K, V][]): boolean[]
|
|
129
143
|
|
|
130
144
|
// Query
|
|
131
145
|
structure.get(key: K): V | undefined
|
|
@@ -134,6 +148,7 @@ structure.size: number
|
|
|
134
148
|
|
|
135
149
|
// Remove
|
|
136
150
|
structure.delete(key: K): boolean
|
|
151
|
+
structure.deleteWhere(pred: Function): boolean // TreeMap/TreeSet/LinkedHashMap
|
|
137
152
|
structure.clear(): void
|
|
138
153
|
|
|
139
154
|
// Iteration
|
|
@@ -148,19 +163,34 @@ structure.entries(): IterableIterator<[K, V]>
|
|
|
148
163
|
|
|
149
164
|
```typescript
|
|
150
165
|
// Add/remove
|
|
151
|
-
heap.
|
|
152
|
-
heap.
|
|
153
|
-
heap.
|
|
154
|
-
heap.
|
|
166
|
+
heap.add(element: T): boolean // Add element
|
|
167
|
+
heap.pop(): T | undefined // Remove highest/lowest priority
|
|
168
|
+
heap.poll(): T | undefined // Deprecated — use pop()
|
|
169
|
+
heap.delete(element: T): boolean // Remove first match
|
|
170
|
+
heap.deleteWhere(pred: Function): boolean // Remove first match by predicate
|
|
155
171
|
|
|
156
172
|
// Peek
|
|
157
173
|
heap.peek(): T | undefined // View highest/lowest without removing
|
|
158
174
|
|
|
159
175
|
// Query
|
|
160
176
|
heap.size: number
|
|
161
|
-
heap.isEmpty: boolean
|
|
177
|
+
heap.isEmpty(): boolean
|
|
162
178
|
```
|
|
163
179
|
|
|
180
|
+
### TreeSet — ES2025 Set Operations
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
treeSet.union(other: Iterable<K>): TreeSet<K>
|
|
184
|
+
treeSet.intersection(other: Iterable<K>): TreeSet<K>
|
|
185
|
+
treeSet.difference(other: Iterable<K>): TreeSet<K>
|
|
186
|
+
treeSet.symmetricDifference(other: Iterable<K>): TreeSet<K>
|
|
187
|
+
treeSet.isSubsetOf(other: Iterable<K>): boolean
|
|
188
|
+
treeSet.isSupersetOf(other: Iterable<K>): boolean
|
|
189
|
+
treeSet.isDisjointFrom(other: Iterable<K>): boolean
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
All accept any `Iterable<K>` (TreeSet, native Set, Array, generators).
|
|
193
|
+
|
|
164
194
|
### Array Methods (Available on All Structures)
|
|
165
195
|
|
|
166
196
|
**All structures support ES6+ array methods via iteration:**
|
package/SPECIFICATION.zh-CN.md
CHANGED
|
@@ -101,21 +101,35 @@
|
|
|
101
101
|
|
|
102
102
|
```typescript
|
|
103
103
|
// 添加操作
|
|
104
|
-
structure.push(element: T):
|
|
105
|
-
structure.unshift(element: T):
|
|
104
|
+
structure.push(element: T): boolean // 添加到末尾
|
|
105
|
+
structure.unshift(element: T): boolean // 添加到开头
|
|
106
106
|
|
|
107
107
|
// 删除操作
|
|
108
108
|
structure.pop(): T | undefined // 从末尾删除
|
|
109
109
|
structure.shift(): T | undefined // 从开头删除
|
|
110
|
+
structure.delete(element: T): boolean // 删除第一个匹配
|
|
111
|
+
structure.deleteAt(index: number): T | undefined // 按索引删除
|
|
112
|
+
structure.deleteWhere(pred: Function): boolean // 按条件删除第一个匹配
|
|
110
113
|
|
|
111
114
|
// 查看操作(读取但不删除)
|
|
112
|
-
structure.peek(): T | undefined //
|
|
113
|
-
structure.
|
|
114
|
-
structure.
|
|
115
|
+
structure.peek(): T | undefined // 查看队头元素(Queue/Deque/Stack)
|
|
116
|
+
structure.first: T | undefined // 查看第一个元素(getter)
|
|
117
|
+
structure.last: T | undefined // 查看最后一个元素(getter)
|
|
118
|
+
|
|
119
|
+
// 反向查找
|
|
120
|
+
structure.findLast(pred: Function): T | undefined // Deque、DoublyLinkedList
|
|
121
|
+
structure.findLastIndex(pred: Function): number // Deque、DoublyLinkedList
|
|
122
|
+
|
|
123
|
+
// Array 兼容(方便迁移)
|
|
124
|
+
structure.includes(element: T): boolean // has() 的别名
|
|
125
|
+
structure.entries(): IterableIterator<[number, T]> // [index, value] 对
|
|
126
|
+
structure.keys(): IterableIterator<number> // 索引迭代器
|
|
127
|
+
structure.toReversed(): this // 非破坏性反转(返回新实例)
|
|
115
128
|
|
|
116
129
|
// 大小和查询
|
|
117
|
-
structure.size: number //
|
|
118
|
-
structure.
|
|
130
|
+
structure.size: number // 元素数量(Stack、Trie 等)
|
|
131
|
+
structure.length: number // 元素数量(Queue、Deque、LinkedList)
|
|
132
|
+
structure.isEmpty(): boolean // 检查是否为空
|
|
119
133
|
```
|
|
120
134
|
|
|
121
135
|
### 树和映射 API
|
|
@@ -124,8 +138,8 @@ structure.isEmpty: boolean // 检查是否为空
|
|
|
124
138
|
|
|
125
139
|
```typescript
|
|
126
140
|
// 添加/更新
|
|
127
|
-
structure.set(key: K, value: V): this
|
|
128
|
-
structure.setMany(entries: [K, V][]):
|
|
141
|
+
structure.set(key: K, value: V): this // 返回 this 支持链式调用(Map/HashMap)
|
|
142
|
+
structure.setMany(entries: [K, V][]): boolean[]
|
|
129
143
|
|
|
130
144
|
// 查询
|
|
131
145
|
structure.get(key: K): V | undefined
|
|
@@ -134,6 +148,7 @@ structure.size: number
|
|
|
134
148
|
|
|
135
149
|
// 删除
|
|
136
150
|
structure.delete(key: K): boolean
|
|
151
|
+
structure.deleteWhere(pred: Function): boolean // TreeMap/TreeSet/LinkedHashMap
|
|
137
152
|
structure.clear(): void
|
|
138
153
|
|
|
139
154
|
// 迭代
|
|
@@ -148,19 +163,34 @@ structure.entries(): IterableIterator<[K, V]>
|
|
|
148
163
|
|
|
149
164
|
```typescript
|
|
150
165
|
// 添加/删除
|
|
151
|
-
heap.
|
|
152
|
-
heap.
|
|
153
|
-
heap.
|
|
154
|
-
heap.
|
|
166
|
+
heap.add(element: T): boolean // 添加元素
|
|
167
|
+
heap.pop(): T | undefined // 删除最高/最低优先级
|
|
168
|
+
heap.poll(): T | undefined // 已废弃 — 请使用 pop()
|
|
169
|
+
heap.delete(element: T): boolean // 删除第一个匹配
|
|
170
|
+
heap.deleteWhere(pred: Function): boolean // 按条件删除第一个匹配
|
|
155
171
|
|
|
156
172
|
// 查看
|
|
157
173
|
heap.peek(): T | undefined // 查看最高/最低优先级但不删除
|
|
158
174
|
|
|
159
175
|
// 查询
|
|
160
176
|
heap.size: number
|
|
161
|
-
heap.isEmpty: boolean
|
|
177
|
+
heap.isEmpty(): boolean
|
|
162
178
|
```
|
|
163
179
|
|
|
180
|
+
### TreeSet — ES2025 集合操作
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
treeSet.union(other: Iterable<K>): TreeSet<K> // 并集
|
|
184
|
+
treeSet.intersection(other: Iterable<K>): TreeSet<K> // 交集
|
|
185
|
+
treeSet.difference(other: Iterable<K>): TreeSet<K> // 差集
|
|
186
|
+
treeSet.symmetricDifference(other: Iterable<K>): TreeSet<K>// 对称差集
|
|
187
|
+
treeSet.isSubsetOf(other: Iterable<K>): boolean // 子集判断
|
|
188
|
+
treeSet.isSupersetOf(other: Iterable<K>): boolean // 超集判断
|
|
189
|
+
treeSet.isDisjointFrom(other: Iterable<K>): boolean // 不相交判断
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
接受任何 `Iterable<K>`(TreeSet、原生 Set、数组、生成器)。
|
|
193
|
+
|
|
164
194
|
### 数组方法(所有结构上可用)
|
|
165
195
|
|
|
166
196
|
**所有结构通过迭代支持 ES6+ 数组方法:**
|