4.0 KiB
4.0 KiB
id | title | challengeType |
---|---|---|
587d8251367417b2b2512c64 | Search within a Linked List | 1 |
Description
Stack
and Queue
classes?
We should also be able to find specific elements in our linked list. Traversing through data structures is something you'll want to get a lot of practice with! Let's create an indexOf
method that takes an element
as an argument, and returns that element's index
in the linked list. If the element is not found in the linked list, return -1
.
Let's also implement a method that does the opposite: an elementAt
method that takes an index
as an argument and returns the element
at the given index
. If no element
is found, return undefined
.
Instructions
isEmpty
method that checks if the linked list is empty, an indexOf
method that returns the index
of a given element, and an elementAt
that returns an element
at a given index.
Tests
tests:
- text: Your <code>LinkedList</code> class should have a <code>indexOf</code> method.
testString: assert((function(){var test = new LinkedList(); return (typeof test.indexOf === 'function')}()), 'Your <code>LinkedList</code> class should have a <code>indexOf</code> method.');
- text: Your <code>LinkedList</code> class should have a <code>elementAt</code> method.
testString: assert((function(){var test = new LinkedList(); return (typeof test.elementAt === 'function')}()), 'Your <code>LinkedList</code> class should have a <code>elementAt</code> method.');
- text: Your <code>size</code> method should return the length of the linked list
testString: assert((function(){var test = new LinkedList(); test.add('cat'); test.add('dog'); test.add('kitten'); return test.size() === 3}()), 'Your <code>size</code> method should return the length of the linked list');
- text: Your <code>indexOf</code> method should return the index of the given element.
testString: assert((function(){var test = new LinkedList(); test.add('cat'); test.add('dog'); test.add('kitten'); return test.indexOf('kitten') === 2}()), 'Your <code>indexOf</code> method should return the index of the given element.');
- text: Your <code>elementAt</code> method should return at element at a given index.
testString: assert((function(){var test = new LinkedList(); test.add('cat'); test.add('dog'); test.add('kitten'); return test.elementAt(1) === 'dog'}()), 'Your <code>elementAt</code> method should return at element at a given index.');
Challenge Seed
function LinkedList() {
var length = 0;
var head = null;
var Node = function(element){ // {1}
this.element = element;
this.next = null;
};
this.size = function() {
return length;
};
this.head = function(){
return head;
};
this.add = function(element){
var node = new Node(element);
if(head === null){
head = node;
} else {
currentNode = head;
while(currentNode.next){
currentNode = currentNode.next;
}
currentNode.next = node;
}
length++;
};
this.remove = function(element){
var currentNode = head;
var previousNode;
if(currentNode.element === element){
head = currentNode.next;
} else {
while(currentNode.element !== element) {
previousNode = currentNode;
currentNode = currentNode.next;
}
previousNode.next = currentNode.next;
}
length --;
};
// Only change code below this line
// Only change code above this line
}
Solution
// solution required