Я хочу использовать класс LinkedList в классе Queue через node.js 'require'.По сути, я хотел бы воссоздать очередь, используя методы из LinkedList, чтобы она была внутренней структурой данных в очереди.Очередь должна работать как структура данных с тем же именем, но с использованием связанного списка.
Я попытался установить конструктор в Очередь, который создает связанный список, и оттуда я бы использовал его методы:вызывая их в методах класса Queue.Класс LinkedList использует класс Node из другого файла для создания новых узлов для применения к связанному списку, но это прекрасно работает.
// LinkedList file
let Node = require('./Node.js');
class LinkedList {
constructor() {
this.head = null;
this.length = 0;
}
size() {
let traveler = this.head;
while (traveler) {
traveler = traveler.next;
this.length++;
}
return this.length;
}
append(value) {
let newNode = new Node(value);
if (!this.head) {
this.head = newNode;
this.length++;
return;
}
let traveler = this.head;
while (traveler.next) {
traveler = traveler.next;
}
traveler.next = newNode;
this.length++;
}
}
// Queue file
let LinkedList = require('../linked-list/LinkedList');
class Queue {
constructor() {
this.linkedList = new LinkedList();
}
enqueue(value) {
this.linkedList.append(value);
}
size() {
return this.linkedList.size();
}
isEmpty() {
let queueSize = this.linkedList.size();
return queueSize === 0;
}
}
Если я вызываю queue.enqueue (5) три раза,например, я ожидал бы создать связанный список с тремя узлами со значением 5 и последним, указывающим на ноль, точно так же, как обычный связанный список.Прямо сейчас я получаю следующий вывод, когда я console.log this.linkedList:
head: Node {value: 5, next: Node {value: 5, next: [Node]}}, length: 6} I'mне уверен, почему длина равна 6 и почему второй узел указывает на [Node].Длина должна быть 3.