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

datastructskit

v3.0.0

Published

DataStructuresJSKit is an easy-to-use package that adds essential data structures to your JavaScript code. With support for Typescript.

Downloads

15

Readme

DataStructsKit

The DataStructsKit package provides a simple implementation of a collection of data structure. The package is designed to be lightweight and easy to use, and currently supports the following data structures:

Installation

npm install datastructskit

Usage

To use the DataStructsKit package, simply import the data structure you want to use from the package:

import {
  LinkedListNode,
  LinkedList,
  DoublyLinkedList,
  DoublyLinkedListNode,
  Stack,
  Queue,
  BinarySearchTree,
  BinarySearchTreeNode,
} from "datastructskit";

Linked lists & Doubly linked lists

You can create a new linked list(singly) or a doubly linked list by calling the LinkedList or DoublyLinkedList constructor:

const linkedList = new LinkedList("head");
const doublyLinkedList = new DoublyLinkedList("head");

This creates a new linked list with a single node, with the value "head".

The generated list has the following properties:

  • head: A reference to the first node in the linked list.
  • tail: A reference to the last node in the linked list.
  • length: The number of nodes in the linked list.

And the following methods:

add

The add method adds a new node to the end of the linked list.

linkedList.add("new tail");
insert

The insert method inserts a new node at a specified position in the linked list.

linkedList.insert(1, "new node");
toArray

The toArray method returns an array of all the values in the linked list.

const values = linkedList.toArray();
has

The has method returns true if the specified value is found in the linked list, false otherwise.

const hasValue = linkedList.has("new tail");
delete

The delete method deletes the node at the specified index in the linked list.

linkedList.delete(1);

Datatypes

Note that the LinkedList and the DoublyLinkedList support any datatype, and not just strings or numbers. You can use any valid JavaScript datatype as the value for a node in the list.

Stack

You can create a new stack by calling the Stack constructor:

const stack = new Stack();

This creates a new stack with no elements.

The stack has the following properties:

  • items: An array that holds the elements of the stack.
  • length: The number of elements in the stack.

And the following methods:

peek

The peek method returns the element at the top of the stack without removing it.

const topElement = stack.peek();
isEmpty

The isEmpty method returns true if the stack is empty, false otherwise.

const emptyStatus = stack.isEmpty();
push

The push method adds a new element to the top of the stack.

stack.push(value);

It returns the updated Stack instance, allowing you to chain other methods to perform additional operations on the stack. For example:

stack.push(value).push(anotherValue);
pop

The pop method removes and returns the element at the top of the stack.

const removedElement = stack.pop();
clear

The clear method removes all elements from the stack, making it empty.

stack.clear();

Data Types

Note that the Stack class supports any data type. You can use any valid JavaScript data type as the value for an element in the stack.

Queue

To create a new queue, call the Queue constructor:

const queue = new Queue();

This creates a new empty queue.

The queue has the following properties:

  • first: A reference to the first node in the queue.
  • last: A reference to the last node in the queue.
  • size: The number of nodes in the queue.

And the following methods:

isEmpty

The isEmpty method returns true if the queue is empty, false otherwise.

const emptyStatus = queue.isEmpty();
toArray

The toArray method returns an array containing all the values in the queue, in the order they were added.

const items = queue.toArray();
peek

The peek method returns the value of the first node in the queue without removing it.

const firstValue = queue.peek();
enqueue

The enqueue method adds a new element to the end of the queue.

queue.enqueue(value);

Certainly! Here's an updated version of the documentation for the enqueue method that includes information about chaining other methods:

enqueue

The enqueue method adds a new element to the end of the queue.

queue.enqueue(value);

It returns the updated Queue instance, allowing you to chain other methods to perform additional operations on the queue. For example:

queue.enqueue(value).enqueue(anotherValue);
dequeue

The dequeue method removes and returns the value of the first node in the queue.

const removedValue = queue.dequeue();
clear

The clear method removes all nodes from the queue, making it empty.

queue.clear();

Note that the enqueue, dequeue, and peek methods operate on the first and last nodes of the queue using the LinkedListNode class.

Data Types

The Queue class supports any data type. You can use any valid JavaScript data type as the value for a node in the queue.

Binary Search Tree

You can create an empty binary search tree by calling the BinarySearchTree constructor:

const tree = new BinarySearchTree();

or you can create a binary with a root value like this:

const tree = new BinarySearchTree(value);

The binary search tree has the following properties:

  • root: A reference to the root node of the tree.
  • dataType: The type of data stored in the tree, which can be "string", "number", or "date". If the tree is empty, the dataType is null.

And the following methods:

search

The search method searches for a node with the specified value in the binary search tree and returns the node if found, or null if not found.

const node = tree.search(value);
insert

The insert method adds a new node with the specified value to the binary search tree.

tree.insert(value);

It returns the updated BinarySearchTree instance, allowing you to chain other methods to perform additional operations on the tree. For example:

tree.insert(value).insert(anotherValue);
remove

The remove method removes a node with the specified value from the binary search tree.

tree.remove(value);

like the insert method it returns the updated BinarySearchTree instance, allowing you to chain other methods even if target node wasn't found.

tree.remove(value).remove(anotherValue);
minimum

The minimum method returns the node with the minimum value in the binary search tree, or null if the tree is empty.

const minNode = tree.minimum();
maximum

The maximum method returns the node with the maximum value in the binary search tree, or null if the tree is empty.

const maxNode = tree.maximum();
clear

The clear method removes all nodes from the binary search tree and resets its dataType, making it empty.

tree.clear();

It also support method chaining

tree.clear().insert(value);

Data Types

The BinarySearchTree class supports values of type string, number, and Date. You can use any valid JavaScript value of these types when inserting or searching for nodes in the tree. If you attempt to insert a value that does not match the current dataType of the tree, an error will be thrown.

Note: The BinarySearchTreeNode class represents a node in the binary search tree. It has the following properties:

  • value: The value stored in the node. It can be a string, number, or Date.
  • frequency: The number of occurrences of the value in the tree.
  • right: A reference to the right child node.
  • left: A reference to the left child node.

license

The MIT license, Full license is here