JavaScript implementation of a basic stack with the ability to add and remove values.
var Stack = function () {
this.head = null;
this.length = 0;
}
Stack.prototype.push = function (value) {
var node = {
value: value,
next: null
};
if (!this.head) {
this.head = node;
} else {
node.next = this.head;
this.head = node;
}
return this.length += 1;
};
Stack.prototype.pop = function () {
// If there is no head node, return `undefined`
if (!this.head) {
return;
}
var node = this.head;
// Update the head reference and remove the next node reference from the previous head
this.head = node.next;
node.next = null;
this.length -= 1;
return node.value;
};