@he11sing/collections
TypeScript icon, indicating that this package has built-in type declarations

1.2.3 • Public • Published

@he11sing/collections

Collection of main data structures based on Typescript

Contents

  1. LinkedList
  2. EventedLinkedList
  3. Stack
  4. Queue

LinkedList

This is doubly linked list realization.

import { LinkedList } from '@he11sing/collections';

const list = new LinkedList<number>(); // May create list from array (by forward or backward direction)
console.log(list.isEmpty()); // true

list.pushBack(3);
list.pushFront(2);
list.pushBack(4);
list.pushFront(1);
console.log(list.isEmpty()); // false
console.log(list.getSize()); // 4

// Traversing list items from head to tail direction
list.forEach(({ data }, stop) => { // Use stop function to break forEach loop
  console.log(data); // 1 2 3 4
});

// Traversing list items from tail to head direction
list.forEach((item, stop) => { // Use stop function to break forEach loop
  if (item.data % 2) list.remove(item); // remove odd items from list
}, false);

// Traversing list items by iterator
for (const item of list) {
  console.log(item.data); // 2 4
}

// Convert list to array
const sum = [...list].reduce((acc, cur) => acc + cur.data, 0);
console.log(sum); // 6

list.clear(); // Remove all list items

EventedLinkedList

Provides the same API as the LinkedList, but allows you to handle some events

import { EventedLinkedList, LinkedListEvent } from '@he11sing/collections';

const list = new EventedLinkedList<number>(); // May create list from array (by forward or backward direction)
console.log(list.isEmpty()); // true

list.on(LinkedListEvent.HeadChanged, () => {
  console.log(`${LinkedListEvent.HeadChanged} emitted`);
}).on(LinkedListEvent.TailChanged, () => {
  console.log(`${LinkedListEvent.TailChanged} emitted`);
}).on(LinkedListEvent.EmptyChanged, (isEmpty) => {
  console.log(`${LinkedListEvent.EmptyChanged} emitted: ${isEmpty}`);
});

Stack

This is stack data structure realization based on linked list.

import { Stack } from '@he11sing/collections';

const stack = new Stack<string>(); // May create stack from array
console.log(stack.isEmpty()); // true

stack.push('One');
stack.push('Two');
stack.push('Three');
console.log(stack.isEmpty()); // false
console.log(stack.getSize()); // 3

console.log(stack.pop()); // Three
stack.push('Four');

while(!stack.isEmpty()) {
  console.log(stack.pop()); // Four Two One
}

stack.clear(); // Remove all stack items

Queue

This is queue data structure realization based on linked list.

import { Queue } from '@he11sing/collections';

const queue = new Queue<string>(); // May create queue from array
console.log(queue.isEmpty()); // true

queue.push('One');
queue.push('Two');
queue.push('Three');
console.log(queue.isEmpty()); // false
console.log(queue.getSize()); // 3

console.log(queue.pop()); // One
queue.push('Four');

while(!queue.isEmpty()) {
  console.log(queue.pop()); // Two Three Four
}

queue.clear(); // Remove all queue items

Package Sidebar

Install

npm i @he11sing/collections

Weekly Downloads

1

Version

1.2.3

License

MIT

Unpacked Size

31.7 kB

Total Files

25

Last publish

Collaborators

  • he11sing