Documentation Index
Fetch the complete documentation index at: https://mintlify.com/sh2aliyev/notes/llms.txt
Use this file to discover all available pages before exploring further.
Overview
A stack is a data structure that stores items according to the Last In First Out (LIFO) principle. The most recently added item is the first one to be removed.
| Operations | Complexity |
|---|
| Push (insert end) | O(1) |
| Pop (delete last) | O(1) |
| Peek (view last) | O(1) |
Implementation
Stacks can be implemented using different underlying structures. The most common versions are based on arrays or linked lists.
Array Based Stack
class Stack {
constructor() {
this.items = [];
}
push(element) {
this.items.push(element);
}
pop() {
if (this.items.length == 0) {
throw new Error('stack is empty');
}
return this.items.pop();
}
peek() {
return this.items.at(-1);
}
}
Usage:
const myStack = new Stack();
myStack.push('One');
myStack.push('Two');
myStack.push('Three');
console.log(myStack.peek()); // Three
console.log(myStack.pop()); // Three
console.log(myStack.pop()); // Two
console.log(myStack.pop()); // One
console.log(myStack.peek()); // undefined
Linked List Based Stack
class StackNode {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor() {
this.top = null;
this.size = 0;
}
push(value) {
const newNode = new StackNode(value);
newNode.next = this.top;
this.top = newNode;
this.size++;
}
pop() {
if (this.top === null) {
throw new Error('stack is empty');
}
const value = this.top.value;
this.top = this.top.next;
this.size--;
return value;
}
peek() {
if (this.top === null) {
throw new Error('stack is empty');
}
return this.top.value;
}
}
Usage:
const myStack = new Stack();
myStack.push('One');
myStack.push('Two');
myStack.push('Three');
console.log(myStack.peek()); // Three
console.log(myStack.pop()); // Three
console.log(myStack.pop()); // Two
console.log(myStack.pop()); // One
console.log(myStack.peek()); // Error: stack is empty