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

lucabro-linked-list

v1.0.29

Published

Class to managing linked lists for web projects

Downloads

10

Readme

TODOS


  • create and test merge
  • create and test sort
  • test contain
  • test pos
  • test getElemAtPos
  • test reduce
  • test slice
  • test spice
  • optimize sort function
  • update readme api documentation

Install


npm install lucabro-linked-list --save

Use


Import

import {LinkedList} from "lucabro-linked-list/package/LinkedList";

Documentation

Index

  • Properties
    • start
    • end
    • cloned_list
    • prev
    • data
    • next
  • Methods
    • init(c: {new (data: any): T;}, init_data?: Array<any>): void
    • addElem(data: any, ll?: LinkedList<T>): LinkedList<T>
    • addElemRight(data: any, ll?: LinkedList<T>): LinkedList<T>
    • addElemLeft(data: any, ll?: LinkedList<T>): LinkedList<T>
    • removeElem(elem?: T): LinkedList<T>
    • removeElemByPos(pos: number): LinkedList<T>
    • removeElemByData(data: any): LinkedList<T>
    • insertElem(data: any, pos?: number): LinkedList<T>
    • length(): number
    • toStart(ll?: LinkedList<T>): LinkedList<T>
    • toNext(ll?: LinkedList<T>): LinkedList<T>
    • toPrev(ll?: LinkedList<T>): LinkedList<T>
    • toEnd(ll?: LinkedList<T>): LinkedList<T>
    • get(): T
    • destroy(): void
    • isStart(elem?: T): boolean
    • isEnd(elem?: T): boolean
    • clone(return_cloned?: boolean): LinkedList<T>
    • concat(list_to_append: LinkedList<T>): LinkedList<T>
    • rMerge(list_to_merge: LinkedList<T>, func?: Function): LinkedList<T>
    • merge(list_to_merge: LinkedList<T>, func?: Function): LinkedList<T>
    • toArray(): Array<any>
    • rSort(sort_func?: Function, list?: LinkedList<T>): LinkedList<T>
    • sort(sort_func?: Function, list?: LinkedList<T>): LinkedList<T>
    • isEqual(list: LinkedList<T>, equality_func?: (a: T, b: T) => boolean): boolean

Properties

start:T

Pointer to the head of the list

end:T

Pointer to the end of the list

cloned_list:LinkedList<T>

Reference to the cloned list

prev:T

Pointer to the previous element of the list with respect of the current element

data:any

Value of the current element

next:T

Pointer to the next element of the list with respect of the current element

Methods

LinkedList();

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();

Constructor

init(c: {new (data: any): T;}, init_data?: Array<any>): void

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType);

or

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);

Init list, with or without initial data

addElem(data: any, ll?: LinkedList<T>): LinkedList<T>`

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.addElem('data4');

Add an element at the right of the list, alias of addElemRight

addElemRight(data: any, ll?: LinkedList<T>): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.addElemRight('data4');

Add an element at the right of the list

addElemLeft(data: any, ll?: LinkedList<T>): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.addElemLeft('data4');

Add an element at the left of the list

removeElem(elem?: T): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
//
var listElem:ElemenType = ll.get();
ll.removeElem(listElem);
//
// or
//
ll.removeElem();

Remove current element or a specified one

removeElemByPos(pos: number): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.removeElemByPos(1);

Remove element by position in the list

removeElemByData(data: any): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.removeElemByData('data2');

Remove element by data

insertElem(data: any, pos?: number): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.insertElem('data2', 1);

Add element at the specified position, without position the element will be added at the start of the list like addElemLeft`

length(): number`

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.length(); // return 3

Return the length of the list

toStart(): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.toStart();

Move the internal pointer to the head of the list

toNext(): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.toNext();

Move the internal pointer to the next element with rispect to the current element

toPrev(): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.toPrev();

Move the internal pointer to the previous element with rispect to the current element

toEnd(): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.toEnd();

Move the internal pointer to the end of the list

get(): T

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.get();

Return the current element

isStart(elem?: T): boolean

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
//
var listElem:ElemenType = ll.toNext().get();
ll.isStart(listElem);

Check if the passed element is the head of the list

isEnd(elem?: T): boolean

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
//
var listElem:ElemenType = ll.toNext().get();
ll.isStart(listElem);

Check if the passed element is the end of the list

clone(return_cloned?: boolean): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
ll.clone();
//
// or
//
var ll_cloned:LinkedList<ElementType> = ll.clone(true);

Clones the list, by default the reference of the cloned list will be stored in the cloned_list, if true value will be passed the refence will return directly

concat(list_to_append: LinkedList<T>): LinkedList<T>

var ll1:LinkedList<ElementType> = new LinkedList<ElementType>();
ll1.init(ElementType, ['data1', 'data2', 'data3']);
//
var ll2:LinkedList<ElementType> = new LinkedList<ElementType>();
ll2.init(ElementType, ['data4', 'data5', 'data6']);
//    
ll1.concat(ll2);

Concatenate two lists

rMerge(list_to_merge: LinkedList<T>, func?: Function): LinkedList<T>

var ll1:LinkedList<ElementType> = new LinkedList<ElementType>();
ll1.init(ElementType, ['data1', 'data2', 'data3']);
//
var ll2:LinkedList<ElementType> = new LinkedList<ElementType>();
ll2.init(ElementType, ['data4', 'data5', 'data6']);
//    
ll1.rMerge(ll2);

Merge recursively two lists, a sorting func can be passed

merge(list_to_merge: LinkedList<T>, func?: Function): LinkedList<T>

var ll1:LinkedList<ElementType> = new LinkedList<ElementType>();
ll1.init(ElementType, ['data1', 'data2', 'data3']);
//
var ll2:LinkedList<ElementType> = new LinkedList<ElementType>();
ll2.init(ElementType, ['data4', 'data5', 'data6']);
//    
ll1.merge(ll2);

Merge two lists, a sorting func can be passed // TODO

toArray(): Array<any>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, ['data1', 'data2', 'data3']);
var arr_to_list:Array\<any\> = ll.toArray();

Return an array with value from the list's elements

rSort(sort_func?: Function, list?: LinkedList<T>): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, [7, 5, 3, 9, 12, 0]);
ll.rSort();

Sort recursively the list, a sorting function an the list to sort can be passed

sort(sort_func?: Function, list?: LinkedList<T>): LinkedList<T>

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, [7, 5, 3, 9, 12, 0]);
ll.rSort();

Sort the list, a sorting function an the list to sort can be passed `// TODO

isEqual(list: LinkedList<T>, equality_func?: (a: T, b: T) => boolean): boolean

var ll1:LinkedList<ElementType> = new LinkedList<ElementType>();
ll1.init(ElementType, ['data1', 'data2', 'data3']);
//
var ll2:LinkedList<ElementType> = new LinkedList<ElementType>();
ll2.init(ElementType, ['data1', 'data5', 'data3']);
//    
ll1.isEqual(ll2);

Check if the list is equal to another, compare function can be passed

destroy(): void

var ll:LinkedList<ElementType> = new LinkedList<ElementType>();
ll.init(ElementType, [7, 5, 3, 9, 12, 0]);
ll.destroy();

Destroy the list