container-doublylist
Version:
DoublyList implementation in JavaScript
76 lines (63 loc) • 1.8 kB
Markdown
DoublyList implementation in JavaScript
To manage a list of elements. Best use case: elements are frequently removed from the list.
**Complexity in O(1) for addition and removal**.
Note: Benchmarks seem to show that **list iteration is as fast as array iteration** on all major browsers.
To **instantiate** a new list:
``` javascript
var myList = new DoublyList();
```
To **add** an element:
``` javascript
var myObjectReference = myList.add(myObject); // add on front by default
// or
var myObjectReference = myList.addFront(myObject);
// or
var myObjectReference = myList.addBack(myObject);
```
To **remove** an element:
``` javascript
myList.removeByReference(myObjectReference); // O(1)
// or
myList.remove(myObject); // O(n)
```
To **pop** an element:
``` javascript
var myObject = myList.pop(); // pop from front by default
// or
var myObject = myList.popFront();
// or
var myObject = myList.popBack();
```
To **insert** an element **before** the given node:
``` javascript
var myOtherObjectReference = myList.addBefore(myObjectReference, myOtherObject);
```
To **insert** an element **after** the given node:
``` javascript
var myOtherObjectReference = myList.addAfter(myObjectReference, myOtherObject);
```
To **move** an element to the beginning:
``` javascript
myList.moveToTheBeginning(myObjectReference);
```
To **move** an element to the end:
``` javascript
myList.moveToTheEnd(myObjectReference);
```
To **iterate** through the elements:
``` javascript
for (var node = myList.first; node !== null; node = node.next) {
node.object += 1;
}
```
To **apply a treatment** on all the elements:
``` javascript
myList.forEach(function (object) {
console.log(object);
});
```
To **convert into an array**:
``` javascript
var myArray = myList.toArray();
```