| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- 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
 
- }
 
 
  |