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