Skip to content

Instantly share code, notes, and snippets.

@jonniek
Last active August 29, 2018 15:27
Show Gist options
  • Save jonniek/ef64bb74f5a28df7042ffd69db6e1214 to your computer and use it in GitHub Desktop.
Save jonniek/ef64bb74f5a28df7042ffd69db6e1214 to your computer and use it in GitHub Desktop.
Simple queue and Stack in js
function createStack() {
let head = null
let length = 0
return {
push: (data) => {
head = { data, next: head }
length++
},
pop: () => {
if (head === null) return null
let oldHead = head
head = head.next
length--
return oldHead.data
},
length: () => length,
}
}
function createQueue() {
const stack1 = createStack()
const stack2 = createStack()
return {
enqueue: (data) => stack1.push(data),
dequeue: () => {
if (!stack2.length() && stack1.length()) {
while (stack1.length()) stack2.push(stack1.pop())
}
return stack2.pop()
},
}
}
const queue = createQueue()
queue.enqueue(1)
console.log("enqueued value: 1")
queue.enqueue(2)
console.log("enqueued value: 2")
queue.enqueue(3)
console.log("enqueued value: 3")
console.log("dequed: value: " + queue.dequeue())
console.log("dequed: value: " + queue.dequeue())
queue.enqueue(4)
console.log("enqueued value: 4")
queue.enqueue(5)
console.log("enqueued value: 5")
console.log("dequed: value: " + queue.dequeue())
console.log("dequed: value: " + queue.dequeue())
console.log("dequed: value: " + queue.dequeue())
console.log("dequed: value: " + queue.dequeue())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment