Files
2022-01-20 20:30:18 +01:00

4.0 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d8250367417b2b2512c60 キュークラスを作成する 1 301631 create-a-queue-class

--description--

スタックと同様に、キューは要素の集まりです。 しかしスタックとは異なり、キューは FIFO (先入れ先出し) の原則に従います。 キューに追加された要素はキューのテール (末尾) にプッシュされ、取り除くことができる要素はキューの先頭にある要素だけです。

キューは配列を使用して表すことができますが、スタックと同じように、ここではキューに対する制御量を制限したいのです。

キュークラスの 2 つの主なメソッドは enqueue と dequeue です。 enqueue メソッドは要素をキューの末尾にプッシュし、dequeue メソッドはキューの先頭にある要素を削除して返します。 他の便利なメソッドとしては front、size、isEmpty があります。

--instructions--

要素をキューの末尾にプッシュする enqueue メソッド、先頭の要素を削除して返す dequeue メソッド、先頭の要素を確認するための front メソッド、長さを示す size メソッド、および、キューが空かどうかを調べる isEmpty メソッドを記述してください。

--hints--

Queue クラスに enqueue メソッドが必要です。

assert(
  (function () {
    var test = new Queue();
    return typeof test.enqueue === 'function';
  })()
);

Queue クラスに dequeue メソッドが必要です。

assert(
  (function () {
    var test = new Queue();
    return typeof test.dequeue === 'function';
  })()
);

Queue クラスに front メソッドが必要です。

assert(
  (function () {
    var test = new Queue();
    return typeof test.front === 'function';
  })()
);

Queue クラスに size メソッドが必要です。

assert(
  (function () {
    var test = new Queue();
    return typeof test.size === 'function';
  })()
);

Queue クラスに isEmpty メソッドが必要です。

assert(
  (function () {
    var test = new Queue();
    return typeof test.isEmpty === 'function';
  })()
);

dequeue メソッドはキューの先頭の要素を削除して返す必要があります。

assert(
  (function () {
    var test = new Queue();
    test.enqueue('Smith');
    test.enqueue('John');
    return test.dequeue() === 'Smith';
  })()
);

front メソッドはキューの先頭の要素の値を返す必要があります。

assert(
  (function () {
    var test = new Queue();
    test.enqueue('Smith');
    test.enqueue('John');
    return test.front() === 'Smith';
  })()
);

size メソッドはキューの長さを返す必要があります。

assert(
  (function () {
    var test = new Queue();
    test.enqueue('Smith');
    return test.size() === 1;
  })()
);

isEmpty メソッドは、キュー内に要素がある場合に false を返す必要があります。

assert(
  (function () {
    var test = new Queue();
    test.enqueue('Smith');
    return !test.isEmpty();
  })()
);

--seed--

--seed-contents--

function Queue() {
  var collection = [];
  this.print = function() {
    console.log(collection);
  };
  // Only change code below this line

  // Only change code above this line
}

--solutions--

function Queue () { 
    var collection = [];
    this.print = function() {
        console.log(collection);
    };
    // Only change code below this line
    this.enqueue = function(item) {
        collection.push(item);
    }

    this.dequeue = function() {
        return collection.shift();
    }

    this.front = function() {
        return collection[0];
    }

    this.size = function(){
        return collection.length;
    }

    this.isEmpty = function() {
        return collection.length === 0 ? true : false;
    }
    // Only change code above this line
}