On gists
Stacks / Queue
JavaScript
stack.js
Raw
#
class Stack {
#items = []
push(item) {
this.#items.push(item)
}
pop() {
if(this.isEmpty()) return 'Underflow'
return this.#items.pop()
}
isEmpty() {
return this.#items.length === 0
}
get length() {
return this.#items.length
}
getItems() {
return this.#items
}
prettify() {
let resultString = ''
for(let i = 0; i < this.#items.length; i++)
resultString += this.#items[i] + ' '
return resultString
}
}
let foods = new Stack
foods.push('pizza')
foods.push('hamburger')
foods.push('kebab')
foods.push('kufte')
console.log(foods.length) // 4
console.log(foods.getItems()) // [ 'pizza', 'hamburger', 'kebab', 'kufte' ]
console.log(foods.prettify()) // pizza hamburger kebab kufte
console.log(foods.pop()) // kufte
console.log(foods.pop()) // kebab
console.log(foods.pop()) // hamburger
console.log(foods.pop()) // pizza
console.log(foods.length) // 0
queue.js
Raw
#
class Queue {
#items = []
enqueue(item) {
this.#items.push(item)
}
dequeue() {
if(this.isEmpty())
return 'Underflow'
return this.#items.shift()
}
isEmpty() {
return this.#items.length === 0
}
front() {
if(this.isEmpty())
return 'No item in queue'
return this.#items[0]
}
get length() {
return this.#items.length
}
getItems() {
return this.#items
}
prettify() {
let resultString = ''
for(let i = 0; i < this.#items.length; i++)
resultString += this.#items[i] + ' '
return resultString
}
}
let foods = new Queue
console.log(foods.length) // 0
foods.enqueue('pizza')
foods.enqueue('hamburger')
foods.enqueue('kebab')
foods.enqueue('kufte')
console.log(foods.length) // 4
console.log(foods.getItems()) // [ 'pizza', 'hamburger', 'kebab', 'kufte' ]
console.log(foods.prettify()) // pizza hamburger kebab kufte
console.log(foods.dequeue()) // pizza
console.log(foods.dequeue()) // hamburger
console.log(foods.dequeue()) // kebab
console.log(foods.dequeue()) // kufte
console.log(foods.length) // 0
url.txt
Raw
#
https://dev.to/adnanbabakan/you-already-know-these-data-structures-arrays-stacks-queues-5436