fifo
Version:
FIFO queue implemented using a double linked-list
117 lines (66 loc) • 2.29 kB
Markdown
using a double linked-list
```
npm install fifo
```
[](http://travis-ci.org/mafintosh/fifo)
``` js
var fifo = require('fifo')()
fifo.push('hello')
fifo.push('world')
console.log(fifo.first()) // prints hello
console.log(fifo.last()) // prints world
console.log(fifo.shift()) // prints hello
console.log(fifo.shift()) // prints world
var node = fifo.push('meh')
fifo.remove(node) // remove 'meh' from the stack
fifo.unshift('hello') // insert at the beginning
```
`fifo` uses a linked list behind the scene so all list manipulation methods run in O(1)
## API
#### `fifo = FIFO()`
Create a new instance
Contains the first node on the list.
Number of nodes in the list.
Push a new value to the end of the list. Returns a node that contains this value.
The value can be accessed by accessing `node.value`.
Removes the first node and returns the value
Removes the last node and returns the value
Removes the node and returns the value
Readds a node. Should only be done with a node that has been removed.
Peek at the first value
Peek at the last value
Inserts a value at the beginning of the list
Returns the next node relative to the node you pass.
If the node was the last node in the list `null` is returned.
Returns the previous node relative to the node you pass.
If the node was the first node in the list `null` is returned.
Moves a node to the end of the list
Clears the list.
Iterate over all values in the list. Calls the function with `value, node`.
To iterate the list simply use the following for loop
``` js
for (var node = fifo.node; node; node = fifo.next(node)) {
console.log('value is', node.value)
}
```
Optionally you can call `fifo.forEach(fn)` which does the above internally.
MIT
FIFO queue implemented