Skip to content

Instantly share code, notes, and snippets.

@kdiniantoro
Forked from bradtraversy/stack.js
Created May 30, 2020 10:32
Show Gist options
  • Save kdiniantoro/86ca3a8e7b57bf3a95a292b6c27abf6b to your computer and use it in GitHub Desktop.
Save kdiniantoro/86ca3a8e7b57bf3a95a292b6c27abf6b to your computer and use it in GitHub Desktop.
Stack data structure
class Stack {
constructor() {
this.items = []
this.count = 0
}
// Add element to top of stack
push(element) {
this.items[this.count] = element
console.log(`${element} added to ${this.count}`)
this.count += 1
return this.count - 1
}
// Return and remove top element in stack
// Return undefined if stack is empty
pop() {
if(this.count == 0) return undefined
let deleteItem = this.items[this.count - 1]
this.count -= 1
console.log(`${deleteItem} removed`)
return deleteItem
}
// Check top element in stack
peek() {
console.log(`Top element is ${this.items[this.count - 1]}`)
return this.items[this.count - 1]
}
// Check if stack is empty
isEmpty() {
console.log(this.count == 0 ? 'Stack is empty' : 'Stack is NOT empty')
return this.count == 0
}
// Check size of stack
size() {
console.log(`${this.count} elements in stack`)
return this.count
}
// Print elements in stack
print() {
let str = ''
for(let i = 0; i < this.count; i++) {
str += this.items[i] + ' '
}
return str
}
// Clear stack
clear() {
this.items = []
this.count = 0
console.log('Stack cleared..')
return this.items
}
}
const stack = new Stack()
stack.isEmpty()
stack.push(100)
stack.push(200)
stack.peek()
stack.push(300)
console.log(stack.print())
stack.pop()
stack.pop()
stack.clear()
console.log(stack.print())
stack.size()
stack.isEmpty()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment