JavaScriptでスクラッチからキューを作成する方法


  1. 配列を使用した実装:
class Queue {
  constructor() {
    this.items = [];
  }
  enqueue(element) {
    this.items.push(element);
  }
  dequeue() {
    if (this.isEmpty()) {
      return "キューは空です";
    }
    return this.items.shift();
  }
  front() {
    if (this.isEmpty()) {
      return "キューは空です";
    }
    return this.items[0];
  }
  isEmpty() {
    return this.items.length === 0;
  }
  size() {
    return this.items.length;
  }
  print() {
    console.log(this.items);
  }
}
// キューの使用例
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.print(); // 出力: [1, 2, 3]
console.log(queue.dequeue()); // 出力: 1
console.log(queue.front()); // 出力: 2
console.log(queue.size()); // 出力: 2
  1. オブジェクトを使用した実装:
class Queue {
  constructor() {
    this.head = null;
    this.tail = null;
  }
  enqueue(element) {
    const newNode = { value: element, next: null };
    if (this.isEmpty()) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      this.tail.next = newNode;
      this.tail = newNode;
    }
  }
  dequeue() {
    if (this.isEmpty()) {
      return "キューは空です";
    }
    const removedNode = this.head;
    this.head = this.head.next;
    if (this.head === null) {
      this.tail = null;
    }
    return removedNode.value;
  }
  front() {
    if (this.isEmpty()) {
      return "キューは空です";
    }
    return this.head.value;
  }
  isEmpty() {
    return this.head === null;
  }
  size() {
    let count = 0;
    let currentNode = this.head;
    while (currentNode !== null) {
      count++;
      currentNode = currentNode.next;
    }
    return count;
  }
  print() {
    const elements = [];
    let currentNode = this.head;
    while (currentNode !== null) {
      elements.push(currentNode.value);
      currentNode = currentNode.next;
    }
    console.log(elements);
  }
}
// キューの使用例
const queue = new Queue();
queue.enqueue("A");
queue.enqueue("B");
queue.enqueue("C");
queue.print(); // 出力: ["A", "B", "C"]
console.log(queue.dequeue()); // 出力: "A"
console.log(queue.front()); // 出力: "B"
console.log(queue.size()); // 出力: 2

上記のコード例は、JavaScriptでキューを実装するための基本的な方法です。キューにはさまざまな応用がありますので、必要に応じて機能を追加または修正することができます。また、他のデータ構造やアルゴリズムと組み合わせて使用することもできます。

以上が、JavaScriptでスクラッチからキューを作成する方法のコード例と説明です。これにより、キューの基本的な概念と実装方法が理解できるでしょう。