Simple doubly linked list implementation. Uses a custom class
LoopedListItem
under the hood for the next
and prev
pointers.
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
These are autogenerated from JSDoc comments in the source code.
Kind: global class
Param | Type | Default |
---|---|---|
value | Any |
|
[is_first] | Boolean |
false |
loopedListItem.next(n) ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Param | Type | Default |
---|---|---|
n | Number |
1 |
loopedListItem.prev(n) ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Param | Type | Default |
---|---|---|
n | Number |
1 |
loopedListItem.insertNext(item) ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Returns: LoopedListItem
- Returns the item we just inserted
Param | Type |
---|---|
item | LoopedListItem |
loopedListItem.insertPrev(item) ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Returns: LoopedListItem
- Returns the item we just inserted
Param | Type |
---|---|
item | LoopedListItem |
loopedListItem.removeSelf() ⇒ LoopedListItem
Kind: instance method of LoopedListItem
Kind: global class
- LoopedList
- new LoopedList(value)
- .setHead(value) ⇒
LoopedList
- .unsetHead() ⇒
LoopedList
.init()- .move(steps) ⇒
LoopedList
- .insertNext(item) ⇒
LoopedList
- .insertPrev(item) ⇒
LoopedList
- .popHeadMoveNext() ⇒
LoopedListItem
- .popHeadMovePrev() ⇒
LoopedListItem
- .length() ⇒
Number
- .find(value) ⇒
LoopedListItem
|undefined
- [.@@iterator](#LoopedList+[@@iterator]) ⇒
Any
- .items() ⇒
Any
- .values() ⇒
Any
Param | Type |
---|---|
value | Any |
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
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
Param | Type |
---|---|
item | Any | LoopedListItem |
loopedList.insertPrev(item) ⇒ LoopedList
Kind: instance method of LoopedList
Chainable
Returns: LoopedList
- Returns this
Param | Type |
---|---|
item | Any | LoopedListItem |
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
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 . |
loopedList.@@iterator ⇒ 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
.
An iterator for the LoopedListItem
objects.
Kind: instance method of LoopedList
Returns: Any
- Yields the LoopedListItem
objects in our list, starting with this.head
.
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]);