Trabalhas numa empresa de streaming de música.
Deram-te a tarefa de criar uma funcionalidade de playlists para o teu reprodutor de música.
Escreve um protótipo da aplicação de leitor de música.
Para o protótipo, cada música será representada apenas por um número. Dado um intervalo de números (os IDs das músicas), cria uma lista simplesmente ligada.
Dada uma lista simplesmente ligada, deves conseguir inverter a lista para reproduzir as músicas pela ordem inversa.
A lista ligada é uma estrutura de dados fundamental na informática, usada frequentemente na implementação de outras estruturas de dados.
O tipo mais simples de lista ligada é a lista simplesmente ligada. Isso significa que cada elemento (ou «nó») contém dados, a par de algo que aponta para o nó seguinte da lista.
Se quiseres aprofundar os teus conhecimentos sobre listas ligadas, espreita este artigo, que explica tudo com uns desenhos muito bons.
Define um tuplo linked-list-node.
Define um tuplo linked-list e disponibiliza um método M: linked-list length (de sequences) para que os testes possam chamar length diretamente na tua lista.
<linked-list> ( -- linked-list ): constrói uma lista vazia.>linked-list ( seq -- linked-list ): acrescenta cada elemento de seq a uma lista nova, por ordem.linked-list>array ( linked-list -- array ): devolve os valores, começando pelo topo da lista.list-push ( linked-list value -- linked-list ): acrescenta um valor ao topo.list-pop ( linked-list -- linked-list value ): remove e devolve o valor do topo.list-peek ( linked-list -- value ): devolve o valor do topo sem o remover.list-reverse ( linked-list -- linked-list ): devolve uma lista com os elementos por ordem inversa.Lança uma classe de erro list-empty a partir de list-pop e list-peek quando a lista estiver vazia.
Inscreve-te no Exercism para aprenderes e dominares Factor com 47 conceitos163 exercícios, e mentoria humana real, tudo grátis.