/*基于链表的 - 队列尾部插入和头部删除先进先出*/class LinkListQueue{constructor() {this.length = 0;this.head = null;this.tail = null;}// 入队enqueue(value){if(!this.tail) {this.head = this.tail = {value, next: null, prev: null};} else {this.tail.next = {value, next: null, prev: this.tail};this.tail = this.tail.next}this.length++;}// 出队dequeue() {let value;if(!this.head) return undefined;else{const value = this.head.value;if(!this.head.next){// 只剩最后一个了this.head = this.tail = null;} else {this.head.next.prev = null;this.head = this.head.next;}this.length--;return value;}}}const list = new LinkListQueue();list.enqueue(1);list.enqueue(2);list.enqueue(3);list.enqueue(4);console.log(list.dequeue());console.log(list);
算法总结:
