class Node {
constructor(value) {
this.value = value;
this.prev = null;
}
}
class Queue {
constructor() {
this.front = null;
this.rear = null;
this.length = 0;
}
enqueue(value) {
const newNode = new Node(value);
if (this.length === 0) {
this.front = newNode;
this.rear = newNode;
} else {
this.front.prev = this.rear;
this.rear = newNode;
}
this.length++;
return newNode;
}
dequeue() {
if (!this.front) {
return null;
}
if (this.front === this.rear) {
this.rear = null;
} else {
this.front = this.front.prev;
this.length--;
}
return this.front;
}
}
const myQueue = new Queue();
console.log('myQueue.enqueue(5) : ', myQueue.enqueue(5));
console.log('myQueue : ', myQueue);
console.log('myQueue.enqueue(6) : ', myQueue.enqueue(6));
console.log('myQueue : ', myQueue);
console.log('myQueue.enqueue(7) : ', myQueue.enqueue(7));
console.log('myQueue : ', myQueue);
console.log('myQueue.dequeue() : ', myQueue.dequeue());
console.log('myQueue : ', myQueue);
console.log('myQueue.dequeue() : ', myQueue.dequeue());
console.log('myQueue : ', myQueue);
.as-console-wrapper { max-height: 100%!important; top: 0; }
有两个答案部分...
this.length-
而不是this.length--;
存在增量错误。
class Node {
constructor(value) {
this.value = value;
this.prev = null;
}
}
class Queue {
constructor() {
const queue = [];
this.front = null;
this.rear = null;
this.length = queue.length;
Object.defineProperty(this, 'enqueue', {
value: function (value) {
const node = new Node(value);
const itemCount = queue.push(node);
node.prev = queue[itemCount - 2] || null;
this.front = queue[0];
this.rear = queue[itemCount - 1];
this.length = itemCount;
return node;
}
});
Object.defineProperty(this, 'dequeue', {
value: function () {
const node = queue.shift() || null;
const itemCount = queue.length;
this.front = queue[0] || null;
this.rear = queue[itemCount - 1] || null;
this.length = itemCount;
return node;
}
});
}
}
const queue = new Queue();
console.log('queue.enqueue(5) : ', queue.enqueue(5));
console.log('queue.enqueue(6) : ', queue.enqueue(6));
console.log('queue.enqueue(7) : ', queue.enqueue(7));
console.log('queue.dequeue() : ', queue.dequeue());
console.log('queue.dequeue() : ', queue.dequeue());
console.log(queue);
.as-console-wrapper { max-height: 100%!important; top: 0; }
我的老师让我这样做,但在评论区我被告知我不应该这样做。 为什么?
像这样的正常队列: _empty1__empty2__empty3__empty4_... 所以这里的“front”指向“empty1”。但是, (*1):我的第三项质询与第二项质询相同,但以通函方式提出。
将在文件中说明的任何时候安装,但是将更新所有的依赖关系,并根据是什么创建一个新的文件需要在。 所以很多人说只在开发中运行。但是我的问题是做确实替换了旧的文件,如果你的应用程序要中断,它将中断,因为可能与新更新的依赖项冲突。 我遇到了一种情况,我必须执行,这个问题与扩展有关。唯一的解决方案是进行PHP-pcntl模块安装 我不明白为什么人们害怕在生产中运行。
问题内容: 我一直在寻找为什么不应该在类的构造函数中调用线程的start方法的理由。考虑以下代码: ImportantData是一些通用的东西(可能很重要),而MyOperationThread是知道如何处理SomeClass实例的线程的子类。 脚节点: 我完全理解为什么这是不安全的。如果MyOperationThread在以下语句完成(并且数据已初始化)之前尝试访问SomeClass.data,
我正在编写一个创建序列并保存它们的Java程序。我正在寻找最合适的数据结构来保存序列。我事先不知道序列的长度,也不知道我会有多少个序列,序列可以有不同的长度。 我应该使用什么结构?
问题内容: 为什么不应该使用函数的技术原因是什么?(例如,或)? 为什么我要使用其他东西,即使它们在我的网站上工作? 如果它们在我的网站上不起作用,为什么我会收到类似的错误 警告:mysql_connect():没有那个文件或目录 问题答案: MySQL 扩展: 未在积极开发中 被正式弃用的PHP 5.5(发布2013年6月)。 自 PHP 7.0起 已完全删除 (2015 年 12 月发布) 这