| constructor |
- |
(LinkedList) |
Create a class to represent a linked list. When created,
a linked list should have *no* head node associated with it.
The LinkedList instance will have one property, 'head', which
is a reference to the first node of the linked list. By default
'head' should be 'null'.
|
const list = new LinkedList();
list.head // null
|
| insertFirst |
(data) |
- |
Creates a new Node from argument 'data' and assigns the resulting
node to the 'head' property. Make sure to handle the case in which
the linked list already has a node assigned to the 'head' property.
|
const list = new LinkedList();
list.insertFirst('Hi There'); // List has one node
|
| size |
- |
(integer) |
Returns the number of nodes in the linked list.
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.insertFirst('c');
list.size(); // returns 3
|
| getFirst |
- |
(Node) |
Returns the first node of the linked list.
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.getFirst(); // returns Node instance with data 'a'
|
|
getLast
|
-
|
(Node)
|
Returns the last node of the linked list
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.getLast(); // returns node with data 'a'
|
|
clear
|
-
|
-
|
Empties the linked list of any nodes.
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.clear();
list.size(); // returns 0
|
|
removeFirst
|
-
|
-
|
Removes only the first node of the linked list. The list's head should
now be the second element.
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.removeFirst();
list.getFirst(); // returns node with data 'a'
|
|
removeLast
|
-
|
-
|
Removes the last node of the chain
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.removeLast();
list.size(); // returns 1
list.getLast(); // returns node with data of 'b'
|
|
insertLast
|
(Data)
|
-
|
Inserts a new node with provided data at the end of the chain
|
const list = new LinkedList();
list.insertFirst('a');
list.insertFirst('b');
list.insertLast('c');
list.getLast(); // returns node with data 'C'
|
|
getAt
|
(integer)
|
(Node)
|
Returns the node at the provided index
|
const list = new List();
list.insertFirst('a');
list.insertFirst('b');
list.insertFirst('c');
list.getAt(1); // returns node with data 'b'
|
|
removeAt
|
(integer)
|
-
|
Removes node at the provided index
|
const list = new List();
list.insertFirst('a');
list.insertFirst('b');
list.insertFirst('c');
list.removeAt(1);
list.getAt(1); // returns node with data 'a'
|
|
insertAt
|
(Data, integer)
|
-
|
Create an insert a new node at provided index.
If index is out of bounds, add the node to the end
of the list.
|
const list = new List();
list.insertFirst('a');
list.insertFirst('b');
list.insertFirst('c');
list.insertAt('Hi', 1)
list.getAt(1); // returns node with data 'Hi'
|
|
forEach
|
(function)
|
-
|
Calls the provided function with every node of the chain and the index
of the node.
|
const list = new List();
list.insertLast(1);
list.insertLast(2);
list.insertLast(3);
list.insertLast(4);
list.forEach((node, index) => {
node.data += 10;
});
list.getAt(0); // Returns node with data '11'
|
|
for...of Loop
|
-
|
-
|
Linked list should be compatible as the subject of a 'for...of' loop
|
const list = new List();
list.insertLast(1);
list.insertLast(2);
list.insertLast(3);
list.insertLast(4);
for (let node of list) {
node.data += 10;
}
node.getAt(1); // returns node with data 11
|