freeCodeCamp/curriculum/challenges/portuguese/10-coding-interview-prep/data-structures/learn-how-a-stack-works.md

2.4 KiB

id title challengeType forumTopicId dashedName
587d8250367417b2b2512c5e Aprender como funciona uma pilha 1 301705 learn-how-a-stack-works

--description--

Você provavelmente está familiarizado com uma pilha de livros sobre sua mesa. Você provavelmente usou o recurso de desfazer de um editor de texto. Você também já deve estar acostumado a apertar o botão voltar no seu telefone para voltar ao modo de exibição anterior no seu aplicativo.

Sabem o que eles têm em comum? Todos eles armazenam os dados de uma maneira para que você possa percorrer os dados no sentido inverso.

O livro de cima da pilha foi o que foi colocado lá por último. Se você remover esse livro da parte superior da pilha, você deixaria exposto o livro que foi colocado lá antes do último livro e assim por diante.

Se você pensar nisso, em todos os exemplos acima, você está obtendo o tipo de serviço Last-In-First-Out (o último a entrar é o primeiro a sair). Vamos tentar replicar isso com o nosso código.

Este esquema de armazenamento de dados é chamado de Pilha (ou stack, em inglês). Em particular, teremos que implementar o método push(), que coloca objetos do JavaScript no topo da pilha, e o método pop(), que remove os objeto do JavaScript no topo da pilha neste momento.

--instructions--

Aqui temos uma pilha de tarefas representadas como um array: "BIO12" está na base, e "PSY44" está no topo da pilha.

Modifique o array fornecido e trate-o como uma stack usando os métodos do JavaScript mencionados acima. Remover o elemento superior "PSY44" da pilha. Em seguida, adicione "CS50" para que ele seja o novo elemento superior da pilha.

--hints--

homeworkStack deve conter apenas 4 elementos.

assert(homeworkStack.length === 4);

O último elemento em homeworkStack deve ser "CS50".

assert(homeworkStack[3] === 'CS50');

homeworkStack não deve conter "PSY44".

assert(homeworkStack.indexOf('PSY44') === -1);

A declaração inicial de homeworkStack não deve ser alterada.

assert(
  code.match(/=/g).length === 1 &&
    /homeworkStack\s*=\s*\["BIO12"\s*,\s*"HIS80"\s*,\s*"MAT122"\s*,\s*"PSY44"\]/.test(
      code
    )
);

--seed--

--seed-contents--

var homeworkStack = ["BIO12","HIS80","MAT122","PSY44"];
// Only change code below this line

--solutions--

// solution required