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.
		
		
		
		
		
			
		
			
				
					
					
						
							48 lines
						
					
					
						
							912 B
						
					
					
				
			
		
		
	
	
							48 lines
						
					
					
						
							912 B
						
					
					
				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 | 
						|
}
 | 
						|
 |