Как бы я использовал этот файл связанного списка в файле очереди, используя 'require'? - PullRequest
0 голосов
/ 30 января 2019

Я хочу использовать класс 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.

1 Ответ

0 голосов
/ 30 января 2019

В LinkedList у меня было приращение this.length как по размеру, так и по другим методам.Это привело к удвоению длины того, что было на самом деле.Я просто удалил все в LinkedList.size (), кроме «return this.length;».

...