freeCodeCamp/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/create-a-queue-class.md

3.8 KiB

id title challengeType forumTopicId dashedName
587d8250367417b2b2512c60 Criar uma classe de fila 1 301631 create-a-queue-class

--description--

Da mesma forma que ocorre com as pilhas, as filas são uma coleção de elementos. Mas, ao contrário delas, as filas seguem o princípio FIFO (First-In First-Out, o primeiro a entrar é o primeiro a sair). Elementos adicionados à fila vão empurrados para o final da fila. Apenas o elemento da frente da fila pode ser removido.

Nós poderíamos usar um array para representar uma fila, mas, assim como fizemos como as pilhas, queremos limitar a quantidade de controle que temos sobre elas.

Os dois métodos principais de uma classe de fila são os métodos enqueue (colocar na fila) e dequeue (remover da fila). O método enqueue faz um push de um elemento para o final da fila, enquanto o método dequeue remove e retorna o elemento na frente da fila. Outros métodos úteis são os métodos front, size e isEmpty.

--instructions--

Escreva um método enqueue que faça o push de um elemento para o final da fila, um método dequeue, que remove e retorna o elemento da frente, um método front, que nos permite ver o elemento da frente, um método size, que mostra o tamanho da fila, e um método isEmpty para verificar se a fila está vazia.

--hints--

A classe Queue deve ter o método enqueue.

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

A classe Queue deve ter o método dequeue.

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

A classe Queue deve ter o método front.

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

A classe Queue deve ter o método size.

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

A classe Queue deve ter o método isEmpty.

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

O método dequeue deve remover e retornar o elemento da frente da fila

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

O método front deve retornar o valor do elemento da frente da fila

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

O método size deve retornar o tamanho da fila

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

O método isEmpty deve retornar false quando houver elementos na fila

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
}