Before writing this, I had a serious debate with myself. Is there a need to implement your own stack using arrays in JavaScript, when the the language itself provides methods, pop() and push(), which are needed in a typical stack???
For the sake of understanding stacks better, I ended up implementing my own, assuming that my stack grows dynamically.
Implementation
1.Create a stack class
class Stack {
constructor() {
this.items = [];
this.size = -1;
}
//add methods
}
In our stack class, we declare an array to implement a stack and set the size to -1 (empty).
2.Add methods to stack class to perform push, pop, peek.
push item to stack
push(data) {
//if an item is provided
if (data) {
//add item to array
this.items.push(data);
//increase size
this.size++;
}
return;
}
Here, an item is added to top of stack.
pop item in stack
The top item in stack is removed and returned. If list is empty Underflow is returned.
pop() {
//if empty
if (this.size === -1) {
return "UnderFlow";
} else {
this.size--;
//return top item in stack
return this.items.pop();
}
}
peek
Returns top element but does not remove it from stack
peek() {
//if empty
if (this.size === -1) {
return "Empty stack";
}
//return top item in stack
return this.items[this.size];
}
Example Test Code
let stack = new Stack();
stack.push(3);
stack.push(5);
stack.push(7);
console.log(stack.pop());//7
console.log(stack.peek());//5
console.log(stack)//[3, 5]
Next, I'll be applying my stack knowledge in creating a postfix calculator 😉 .
Happy coding.
Top comments (0)