typescript-ds-lib
Version:
A collection of TypeScript data structure implementations
80 lines (58 loc) • 2.31 kB
Markdown
# TypeScript Data Structure Library
[](https://www.npmjs.com/package/typescript-ds-lib)
TypeScript data structure implementations without external dependencies. Why to use this library?
- Fully Tested
- Fast
- 0 Dependencies
- Lightweight
- Comes with Comparator (for custom types)
- `equals()` method supported for all data structures
- Well documented
## Install
```
npm install typescript-ds-lib
```
## Usage
```typescript
import { Stack } from 'typescript-ds-lib';
const stack: Stack<number> = new Stack<number>();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.top()); // 3
stack.pop();
console.log(stack.top()); // 2
console.log(stack.size()); // 2
```
## Documentation and Examples
See the [documentation](https://github.com/baloian/typescript-ds-lib/blob/master/doc/DOCUMENTATION.md) for more details and examples.
## Data Structures
- Binary Search Tree
- Deque
- Hash Table (unordered map)
- Heap
- Linked List
- Map
- Matrix
- Priority Queue
- Queue
- Red-Black Tree
- Set
- Stack
- Graph (coming soon)
## `Map-Set` vs Native JavaScript `Map-Set`
The library's `Map` and `Set` data structures are implemented as Red-Black Tree and Binary Search Tree respectively.
Native JavaScript `Map` and `Set` are implemented as Hash Table and Hash Set respectively.
When to use the library's `Map` and `Set`?
- If CPU consumption is important for you as RBT and BST do not do any kind of CPU intensive hashing.
- If your goal is to have a balanced tree with O(log n) complexity for all the operations in Map.
- If memory efficiency is important for you as RBT and BST are more memory efficient than Hash Table and HashSet.
You can consider the library's `Map` and `Set` as ordered map and set, and native JavaScript `Map` and `Set` as unordered map and set.
## Contributions
Contributions are welcome and can be made by submitting GitHub pull requests
to this repository. In general, the source code follows
[Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) and the
rules specified in `.eslintrc.json` file.
## License
This source code is available to everyone under the standard
[MIT LICENSE](https://github.com/baloian/marcal/blob/master/LICENSE).