0.1.310 • Published 7 years ago

efficient-data-structures v0.1.310

Weekly downloads
5
License
MIT
Repository
github
Last release
7 years ago

Efficient data structures for Node

build status coverage report npm npm

Installation

npm install --save efficient-data-structures

Efficient implementations

Usage

You need to first import the data structures that you're going to use.

import {
    BitVector,
    StringBuilder,
    Stack,
    Queue,
    SinglyLinkedList,
    SinglyLinkedListNode,
    DoublyLinkedList,
    DoublyLinkedListNode,
    BinaryTree,
    BinaryTreeNode,
    MinHeap,
    MaxHeap,
    Graph,
    GraphNode,
} from 'efficient-data-structures';

BitVector

const bitVector = new BitVector(10);

bitVector.set(0, true);
bitVector.set(1, false);

console.log(bitVector.get(0)); // true
console.log(bitVector.get(1)); // false

StringBuilder

const stringBuilder = new StringBuilder();

stringBuilder.append('100 degrees');
stringBuilder.append(' Fahrenheit');

console.log(stringBuilder.toString()); // 100 degrees Fahrenheit

Stack

const stack = new Stack();

stack.push(10);
stack.push(20);
stack.push(30);

console.log(stack.peek()); // 30
console.log(stack.pop());  // 30
console.log(stack.peek()); // 20

Queue

const queue = new Queue();

queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);

console.log(queue.dequeue()); // 10
console.log(queue.dequeue()); // 20

SinglyLinkedList

const singlyLinkedList = new SinglyLinkedList();
const tomNode = new SinglyLinkedListNode('Tom');
const jimNode = new SinglyLinkedListNode('Jim');

singlyLinkedList.insert(tomNode, 0);
singlyLinkedList.insert(jimNode, 0);

singlyLinkedList.remove(jimNode);

console.log(singlyLinkedList.count()); // 1

DoublyLinkedList

const doublyLinkedList = new DoublyLinkedList();

const tomNode = new DoublyLinkedListNode('Tom');
const jimNode = new DoublyLinkedListNode('Jim');

doublyLinkedList.insert(tomNode, 0);
doublyLinkedList.insert(jimNode, 0);

doublyLinkedList.remove(jimNode);

console.log(doublyLinkedList.count()); // 1

BinaryTree

//     8
//    / \
//   4   10
//  / \    \
// 2   6    20
const root = new BinaryTreeNode(8);
    root.setLeft(new BinaryTreeNode(4));
        root.left.setLeft(new BinaryTreeNode(2));
        root.left.setRight(new BinaryTreeNode(6));
    root.setRight(new BinaryTreeNode(10));
        root.right.setRight(new BinaryTreeNode(20));
const tree = new BinaryTree(root);

console.log(tree.traverseInOrder());   // [2, 4, 6, 8, 10, 20]
console.log(tree.traversePreOrder());  // [8, 4, 2, 6, 10, 20]
console.log(tree.traversePostOrder()); // [2, 6, 4, 20, 10, 8]

console.log(tree.isBinarySearchTree()); // true
console.log(tree.isBalanced());         // true
console.log(tree.isFull());             // false
console.log(tree.isComplete());         // false
console.log(tree.isPerfect());          // false

MinHeap

//     2
//    / \
//   8   12
//  /
// 10
const minHeap = new MinHeap();

minHeap.insert(8);
minHeap.insert(10);
minHeap.insert(12);
minHeap.insert(2);

console.log(minHeap.extractMin()); // 2
console.log(minHeap.extractMin()); // 8

MaxHeap

//     12
//    /  \
//   8    10
//  /
// 2
const maxHeap = new MaxHeap();

maxHeap.insert(8);
maxHeap.insert(10);
maxHeap.insert(12);
maxHeap.insert(2);

console.log(maxHeap.extractMax()); // 12
console.log(maxHeap.extractMax()); // 10

Graph

// 1---4
//  \   \
//   2---3
//    \ /
//     5
const node1 = new GraphNode(1);
const node2 = new GraphNode(2);
const node3 = new GraphNode(3);
const node4 = new GraphNode(4);
const node5 = new GraphNode(5);

node1.children.push(node2);
node1.children.push(node4);
node2.children.push(node3);
node3.children.push(node4);
node3.children.push(node5);
node5.children.push(node2);

const graph = new Graph(node1);

console.log(graph.traverseDepthFirst());   // [1, 2, 3, 4, 5]
console.log(graph.traverseBreadthFirst()); // [1, 2, 4, 3, 5]

Contributing

Got a new data structure you'd like to see implemented in this package? Please go ahead and create a work item for me; or better yet, send a pull request and I'll be sure to take a look at it within 24 hours. Thanks!

0.1.310

7 years ago

0.1.307

7 years ago

0.1.305

7 years ago

0.1.303

7 years ago

0.1.300

7 years ago

0.1.298

7 years ago

0.1.296

7 years ago

0.1.293

7 years ago

0.1.291

7 years ago

0.1.289

7 years ago

0.1.286

7 years ago

0.1.284

7 years ago

0.1.282

7 years ago

0.1.279

7 years ago

0.1.277

7 years ago

0.1.275

7 years ago

0.1.272

7 years ago

0.1.270

7 years ago

0.1.268

7 years ago

0.1.265

7 years ago

0.1.263

7 years ago

0.1.261

7 years ago

0.1.258

7 years ago

0.1.256

7 years ago

0.1.254

7 years ago

0.1.251

7 years ago

0.1.249

7 years ago

0.1.247

7 years ago

0.1.244

7 years ago

0.1.242

7 years ago

0.1.240

7 years ago

0.1.237

7 years ago

0.1.235

7 years ago

0.1.233

7 years ago

0.1.230

7 years ago

0.1.228

7 years ago

0.1.226

7 years ago

0.1.223

7 years ago

0.1.221

7 years ago

0.1.219

7 years ago

0.1.217

7 years ago

0.1.216

7 years ago

0.1.214

7 years ago

0.1.212

7 years ago

0.1.209

7 years ago

0.1.208

7 years ago

0.1.207

7 years ago

0.1.205

7 years ago

0.1.204

7 years ago

0.1.203

7 years ago

0.1.202

7 years ago

0.1.200

7 years ago

0.1.198

7 years ago

0.1.195

7 years ago

0.1.193

7 years ago

0.1.192

7 years ago

0.1.191

7 years ago

0.1.190

7 years ago

0.1.0

7 years ago