You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
function Queue () { this.head = new Item('head', null) } module.exports = Queue
Queue.prototype.append = function append (kind, value) { var item = new Item(kind, value) this.head.prepend(item) return item }
Queue.prototype.isEmpty = function isEmpty () { return this.head.prev === this.head }
Queue.prototype.first = function first () { return this.head.next }
function Item (kind, value) { this.prev = this this.next = this this.kind = kind this.value = value }
Item.prototype.prepend = function prepend (other) { other.prev = this.prev other.next = this other.prev.next = other other.next.prev = other }
Item.prototype.dequeue = function dequeue () { var prev = this.prev var next = this.next
prev.next = next next.prev = prev this.prev = this this.next = this
return this.value }
Item.prototype.isEmpty = function isEmpty () { return this.prev === this }
|