链表实现队列
/** * 1.单项链表实现队列,但要同时记录head和tail * 2.要从tail入队,head出对, 否则出队时,tail不好定位 * 2.单独记录length,不可遍历链表获取length */ class MyQueue { head = null; // 头 tail = null; // 尾 len = 0; add(n) { let newNode = { value: n, // 因为是最后一级,没有next }; // 处理head 如果入队的时候头是空的,给头直接赋值 if (this.head == null) { this.head = newNode; } // 处理tail let tailNode = this.tail; if (tailNode) { tailNode.next = newNode; } this.len++; this.tail = newNode; } delete() { let headNode = this.head; if (headNode == null) return null; if (this.len == 0) return null; // 取值 const value = headNode.value; // 处理head this.head = headNode.next; this.len--; headNode = null return value } length() { // length 单独存储,不能通过遍历链表来获取length(否则时间复杂度O(n)) return this.len; } }