Stacks and Queues

Run Settings
LanguageJavaScript
Language Version
Run Command
class Node { constructor(value){ this.value = value; this.next = null; } } class Stack { constructor(){ this.top = null; this.bottom = null; this.length = 0; } peek() { return this.top; } push(value){ const newNode = new Node(value); if (this.length === 0) { this.top = newNode; this.bottom = newNode; } else { const holdingPointer = this.top; this.top = newNode; this.top.next = holdingPointer; } this.length++; return this; } pop(){ if (!this.top) { return null; } if (this.top === this.bottom) { this.bottom = null; } const holdingPointer = this.top; this.top = this.top.next; this.length--; return this; } //isEmpty } const myStack = new Stack(); myStack.peek(); myStack.push('google'); myStack.push('udemy'); myStack.push('discord'); myStack.peek(); myStack.pop(); myStack.pop(); myStack.pop(); //Discord //Udemy //google
// with arrays class Stack { constructor(){ this.array = []; } peek() { return this.array[this.array.length-1]; } push(value){ this.array.push(value); return this; } pop(){ this.array.pop(); return this; } } const myStack = new Stack(); myStack.peek(); myStack.push('google'); myStack.push('udemy'); myStack.push('discord'); myStack.peek(); myStack.pop(); myStack.pop(); myStack.pop(); //Discord //Udemy //google
// Queue implementation class Node { constructor(value) { this.value = value; this.next = null; } } class Queue { constructor(){ this.first = null; this.last = null; this.length = 0; } peek() { return this.first; } enqueue(value){ const newNode = new Node(value); if (this.length === 0) { this.first = newNode; this.last = newNode; } else { this.last.next = newNode; this.last = newNode; } this.length++; return this; } dequeue(){ if (!this.first) { return null; } if (this.first === this.last) { this.last = null; } const holdingPointer = this.first; this.first = this.first.next; this.length--; return this; } //isEmpty; } const myQueue = new Queue(); myQueue.peek(); myQueue.enqueue('Joy'); myQueue.enqueue('Matt'); myQueue.enqueue('Pavel'); myQueue.peek(); myQueue.dequeue(); myQueue.dequeue(); myQueue.dequeue(); myQueue.peek();
// Common interview question // Implement Queue using Stacks class CrazyQueue { constructor() { this.first = []; this.last = []; } enqueue(value) { const length = this.first.length; for (let i = 0; i < length; i++) { this.last.push(this.first.pop()); } this.last.push(value); return this; } dequeue() { const length = this.last.length; for (let i = 0; i < length; i++) { this.first.push(this.last.pop()); } this.first.pop(); return this; } peek() { if (this.last.length > 0) { return this.last[0]; } return this.first[this.first.length - 1]; } } const myQueue = new CrazyQueue(); myQueue.peek(); myQueue.enqueue('Joy'); myQueue.enqueue('Matt'); myQueue.enqueue('Pavel'); myQueue.peek(); myQueue.dequeue(); myQueue.dequeue(); myQueue.dequeue(); myQueue.peek();
Editor Settings
Theme
Key bindings
Full width
Lines