0.1.310 • Published 8 years ago

efficient-data-structures v0.1.310

Weekly downloads
5
License
MIT
Repository
github
Last release
8 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

8 years ago

0.1.307

8 years ago

0.1.305

8 years ago

0.1.303

8 years ago

0.1.300

8 years ago

0.1.298

8 years ago

0.1.296

8 years ago

0.1.293

8 years ago

0.1.291

8 years ago

0.1.289

8 years ago

0.1.286

8 years ago

0.1.284

8 years ago

0.1.282

8 years ago

0.1.279

8 years ago

0.1.277

8 years ago

0.1.275

8 years ago

0.1.272

8 years ago

0.1.270

8 years ago

0.1.268

8 years ago

0.1.265

8 years ago

0.1.263

8 years ago

0.1.261

8 years ago

0.1.258

8 years ago

0.1.256

8 years ago

0.1.254

8 years ago

0.1.251

8 years ago

0.1.249

8 years ago

0.1.247

8 years ago

0.1.244

8 years ago

0.1.242

8 years ago

0.1.240

8 years ago

0.1.237

8 years ago

0.1.235

8 years ago

0.1.233

8 years ago

0.1.230

8 years ago

0.1.228

8 years ago

0.1.226

8 years ago

0.1.223

8 years ago

0.1.221

8 years ago

0.1.219

8 years ago

0.1.217

8 years ago

0.1.216

8 years ago

0.1.214

8 years ago

0.1.212

8 years ago

0.1.209

8 years ago

0.1.208

8 years ago

0.1.207

8 years ago

0.1.205

8 years ago

0.1.204

8 years ago

0.1.203

8 years ago

0.1.202

8 years ago

0.1.200

8 years ago

0.1.198

8 years ago

0.1.195

8 years ago

0.1.193

8 years ago

0.1.192

8 years ago

0.1.191

8 years ago

0.1.190

8 years ago

0.1.0

8 years ago