npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

datastructure-ts

v0.1.18

Published

Collection of data structures(LinkedList, DoubleLinkedList, Stack, Queue, Dictionary and etc...) for TypeScript.

Downloads

10

Readme

TSDataStructure

CodeFactor

Build Status

Collection of data structures(LinkedList, DoubleLinkedList, Stack, Queue, Dictionary and etc...) for TypeScript.

Installation

npm i datastructure-ts --save

Data Structures

LinkedList

1->2->3->4

getHead(): LinkedNode

Returns the 'Head' node

isEmpty(): boolean

Returns 'true' if 'LinkedList' is empty and 'false' if no.

size(): number

Returns the amount of nodes

append(value: T): LinkedList

Append given value to the 'linkedList' and returns updated 'LinkedList'

getLast(): LinkedNode

Returns the 'Last' node

toArray(): T[]

Returns array of all items.


const linkedList: LinkedList<number>; // _head = null, _last = null
linkedList.getHead(); // null
linkedList.append(1);
linkedList.getHead(); // 1
linkedList.isEmpty(); // false
linkedList.append(2);
linkedList.size(); // 2
linkedList.toArray(); // [1,2]
linkedList.getLast(); // 2

DoubleLinkedList

1<->2<->3<->4

getHead(): DoubleLinkedList

Returns the 'Head' node

isEmpty(): boolean

Returns 'true' if 'DoubleLinkedList' is empty and 'false' if no.

size(): number

Returns the amount of nodes

append(value: T): LinkedList

Append given value to the 'DoubleLinkedList' and returns updated 'DoubleLinkedList'

getLast(): LinkedNode

Returns the 'Last' node

toArray(): T[]

Returns array of all items.

insert(afterPosition: number, value: T): DoubleLinkedList

Inserts given value to the DoubleLinkedList and returns updated DoubleLinkedList.

insertLast(value: T): DoubleLinkedList

Inserts given value to the DoubleLinkedList and returns updated DoubleLinkedList.

insertLast(value: T): DoubleLinkedList

Insert given value to the 'DoubleLinkedList' at the end and returns updated 'DoubleLinkedList'.

insertFirst(value: T): DoubleLinkedList

Inserts given value to the 'DoubleLinkedList' at the beginning and returns updated 'DoubleLinkedList'.

get(index: number): DoubleLinkedList

Get node by given index.


const doubleLinkedList: DoubleLinkedList<number>; // _head = null, _last = null
doubleLinkedList.getHead(); // null
doubleLinkedList.append(1);
doubleLinkedList.getHead(); // 1
doubleLinkedList.isEmpty(); // false
doubleLinkedList.append(2);
doubleLinkedList.size(); // 2
doubleLinkedList.toArray(); // [1,2]
doubleLinkedList.getLast(); // 2

Dictionary

size(): number

Returns the number of entries (distinct keys) in this dictionary.

isEmpty(): boolean

Returns 'true' if Dictionary is empty and 'false' if no.

put(key: string, value: T)

Add new item to dictionary.

get(key: string): T

Returns item by given key.

remove(key: string)

Removes item from dictionary.

clear()

Removes all items from dictionary.

keys(): string[]

Returns string array of items keys.

toArray(): T[]

Returns array of all items.

containsKey(key: string): boolean

Checks is item with given key exist.


const dictionary = new Dictionary<number>();
dictionary.isEmpty(); // true
dictionary.size(); // 0
dictionary.put('someKey', 1);
dictionary.get('someKey')
dictionary.remove('someKey');

dictionary.put('key1', 1);
dictionary.put('key2', 2);
dictionary.put('key3', 3);
dictionary.keys(); // ['key1', 'key2', 'key3']
dictionary.toArray(); // [1, 2, 3]
dictionary.clear();

dictionary.size(); // 0

Stack

push(value: T)

Pushes value to stack

pop(): T

Fetchs the last value from the stack

peek(): T

The method returns the element at the top of the Stack else returns NULL if the Stack is empty.

size(): T

Returns the size of stack

toArray(): T[]

Returns array of all items


const stack = new Stack<number>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop(); // 3
stack.size(); // 2

Queue

push(value: T)

Pushes value to stack

pop(): T

Fetchs the first value from the stack

peek(): T

The method returns the element at the top of the Queue else returns NULL if the Queue is empty.

size(): T

Returns the size of queue

toArray(): T[]

Returns array of all items


const queue = new Queue<number>();
queue.push(1);
queue.push(2);
queue.push(3);
queue.pop(); // 1
queue.size(); // 2

BinaryTree

getRoot(): BinaryTreeNode

Returns 'root' node

findNode(value: T, node: BinaryTreeNode = null): BinaryTreeNode

Returns node with a given value


const binaryTree = new BinaryTree<number>(1);
binaryTree.getRoot().append(2);
binaryTree.getRoot().append(3);

binaryTree.getRoot().getLeft().append(4);
binaryTree.getRoot().getLeft().append(5);

binaryTree.getRoot().getRight().setLeft(6);
binaryTree.getRoot().getRight().setRight(7);

//          1
//        /   \
//       2     3 
//      / \   / \
//     4   5 6   7

binaryTree.findNode(6).getValue(); // 6

HashMap<K, V>

put(key: K, value: V): void

Inserts the specified key-value pair into the map. If the key already exists, its value will be updated with the new value.

get(key: K): V | null

Returns the value associated with the specified key, or null if the key is not present in the map.

remove(key: K): boolean

Removes the entry with the specified key from the map, if it exists. Returns true if the entry was removed, false if it did not exist in the map.

containsKey(key: K): boolean

Returns true if the map contains the specified key, otherwise false.

containsValue(value: V): boolean

Returns true if the map contains the specified value, otherwise false.

keySet(): Set<K>

Returns a Set of all the keys in the map.

values(): V[]

Returns an array of all the values in the map.

entrySet(): Set<[K, V]>

Returns a Set of all the key-value pairs (as tuples) in the map.

size(): number

Returns the number of key-value pairs in the map.

isEmpty(): boolean

Returns true if the map is empty, otherwise false.

clear(): void

Removes all entries from the map.

TreeNode

getValue()

Returns the value of the node.

setValue(value: T)

Sets the value of the node.

getParent()

Returns the parent of the node.

setParent(parent: TreeNode<T>)

Sets the parent of the node.

getChildren()

Returns the children of the node.

addChild(child: TreeNode<T>)

Adds a child to the node.

removeChild(child: TreeNode<T>)

Removes a child from the node.

isLeaf()

Removes all children from the node.

getHeight()

Returns the height of the node.

getDepth()

Returns the depth of the node.

traversePreorder(callback: (node: TreeNode<T>) => void)

Traverse the tree in preorder (root, left subtree, right subtree) and apply the given callback function to each node.

traversePostorder(callback: (node: TreeNode<T>) => void)

Traverse the tree in postorder (left subtree, right subtree, root) and apply the given callback function to each node.

traverseInorder(callback: (node: TreeNode<T>) => void)

Traverse the tree in inorder (left subtree, root, right subtree) and apply the given callback function to each node.

traverseLevelOrder(callback: (node: TreeNode<T>) => void)

Traverse the tree level by level, starting at the root, and apply the given callback function to each node.

Tree

getRoot()

Returns the root node of the tree.

addChild(parent, childValue)

Adds a child node to a given parent node. Returns the newly created child node.

removeNode(node)

Removes a node and all of its children from the tree.

size()

Returns the number of nodes in the tree.

isEmpty()

Checks if the tree is empty (i.e., has no nodes).

traverseLevelOrder(callback)

Traverse the tree in breadth-first order and apply the given callback function to each node.

Todo

1) Graph

If you have an advice, please feel free to contact with me