1.2.3 • Published 4 years ago
@he11sing/collections v1.2.3
@he11sing/collections
Collection of main data structures based on Typescript
Contents
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