Looped List
Simple doubly linked list implementation. Uses a custom class
LoopedListItem
under the hood for the next
and prev
pointers.
Example Usage
import { LoopedList } from 'looped-list';
let list = new LoopedList(1);
console.log(list.head.value); // 1
list.insertNext(2);
console.log(list.head.value); // 2
list.insertNext(3);
console.log(list.head.value); // 3
list.move(1);
console.log(list.head.value); // 1
list.move(2);
console.log(list.head.value); // 3
list.move(1);
console.log(list.head.value); // 1
API
These are autogenerated from JSDoc comments in the source code.
Classes
- LoopedListItem
- LoopedList
LoopedListItem
Kind: global class
new LoopedListItem(value, [is_first])
Param | Type | Default |
---|
value | Any | |
[is_first] | Boolean | false |
Kind: instance method of LoopedListItem
Kind: instance method of LoopedListItem
loopedListItem.insertNext(item) ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Returns: LoopedListItem
- Returns the item we just inserted
loopedListItem.insertPrev(item) ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Returns: LoopedListItem
- Returns the item we just inserted
loopedListItem.removeSelf() ⇒ LoopedListItem
Kind: instance method of LoopedListItem
LoopedList
Kind: global class
new LoopedList(value)
loopedList.setHead(value) ⇒ LoopedList
Kind: instance method of LoopedList
Chainable
Returns: LoopedList
- Returns this
Param | Type | Description |
---|
value | Any | If the value is not a LoopedListItem , it'll be converted into one, unless undefined is passed, which essentially "unsets" the head. |
loopedList.unsetHead() ⇒ LoopedList
Sets the head
to undefined
, effectively removing all list items.
Kind: instance method of LoopedList
Chainable
Returns: LoopedList
- Returns this
loopedList.init()
Deprecated
Kind: instance method of LoopedList
loopedList.move(steps) ⇒ LoopedList
Moves the head pointer forward or backward by a number of steps.
Kind: instance method of LoopedList
Chainable
Returns: LoopedList
- Returns this
Param | Type | Default | Description |
---|
steps | Number | 1 | Any number. If a negative number is passed, the head pointer moves backwards. |
loopedList.insertNext(item) ⇒ LoopedList
Kind: instance method of LoopedList
Chainable
Returns: LoopedList
- Returns this
loopedList.insertPrev(item) ⇒ LoopedList
Kind: instance method of LoopedList
Chainable
Returns: LoopedList
- Returns this
loopedList.popHeadMoveNext() ⇒ LoopedListItem
Kind: instance method of LoopedList
Returns: LoopedListItem
- Returns the old head
loopedList.popHeadMovePrev() ⇒ LoopedListItem
Kind: instance method of LoopedList
Returns: LoopedListItem
- Returns the old head
loopedList.length() ⇒ Number
Kind: instance method of LoopedList
Returns: Number
- Returns the number of items in our LoopedList.
loopedList.find(value) ⇒ LoopedListItem
| undefined
Searches for the item and returns that item if it is found. Returns undefined
if the value is not found.
Kind: instance method of LoopedList
Param | Type | Description |
---|
value | Any | LoopedListItem | You can pass in a primative value or a LoopedListItem . |
An iterator for the LoopedListItem
objects.
Kind: instance method of LoopedList
Returns: Any
- Yields the LoopedListItem
objects in our list, starting with this.head
.
loopedList.items() ⇒ Any
An iterator for the LoopedListItem
objects.
Kind: instance method of LoopedList
Returns: Any
- Yields the LoopedListItem
objects in our list, starting with this.head
.
loopedList.values() ⇒ Any
An iterator for values of the LoopedListItem
objects.
Kind: instance method of LoopedList
Returns: Any
- Yields the values of the LoopedListItem
objects in our list, starting with this.head
.
Example
assert.deepStrictEqual([...(new LoopedList([1, 2, 3])).values()], [1, 2, 3]);