InstruçÔes

Implement Linked List Operations

Neste laboratĂłrio, vocĂȘ irĂĄ implementar operaçÔes adicionais para uma estrutura de dados de lista ligada, construindo sobre a funcionalidade bĂĄsica de adicionar e remover nĂłs. Objetivo: Cumprir as user stories abaixo e fazer com que todos os testes passem para completar o laboratĂłrio. User Stories: 1. VocĂȘ deve ter uma função contains que aceita uma lista ligada e um elemento. Ela deve retornar true se o elemento especificado existir na lista ligada e false caso contrĂĄrio. 1. VocĂȘ deve ter uma getAt função que aceita uma lista ligada e um Ă­ndice. Ela deve retornar o elemento no Ă­ndice dado na lista ligada. Se o Ă­ndice estiver fora dos limites, deve retornar undefined. 1. VocĂȘ deve ter uma função insertAt que aceita uma lista ligada, um Ă­ndice e um elemento. Ela deve inserir o elemento dado na posição especificada na lista ligada. Se o Ă­ndice estiver fora dos limites, ela nĂŁo deve modificar a lista. 1. VocĂȘ deve ter uma removeAt função que aceita uma lista ligada e um Ă­ndice. Ela deve remover o nĂł no Ă­ndice fornecido na lista ligada. Se o Ă­ndice estiver fora dos limites, nĂŁo deve modificar a lista. 1. VocĂȘ deve ter uma função clear que aceita uma lista ligada. Ela deve remover todos os elementos da lista ligada, efetivamente redefinindo-a para um estado vazio. Nota: Alguns testes posteriores dependem de mĂ©todos anteriores. Por exemplo, se getAt nĂŁo for implementado corretamente, os testes para funçÔes como insertAt e removeAt podem falhar mesmo quando essas funçÔes estiverem quase corretas.

O que fazer:

Testes:

  • `initList` deve retornar um objeto com `head` definido como `null` e `length` definido como `0`.
  • `add` deve aumentar o comprimento da lista em um.
  • `remove` deve diminuir o comprimento da lista em um.
  • VocĂȘ deve ter uma `contains` function.
  • `contains` deve retornar `true` se o elemento existir na lista.
  • `contains` deve retornar `false` se o elemento nĂŁo existir na lista.
  • `contains` deve retornar `false` para uma lista vazia.
  • VocĂȘ deve ter uma `getAt` função.
  • `getAt` deve retornar o elemento em um dado Ă­ndice.
  • `getAt` deve retornar `undefined` para Ă­ndices invĂĄlidos.
  • `getAt` deve retornar `undefined` para uma lista vazia.
  • VocĂȘ deve ter uma `insertAt` função.
  • `insertAt` deve inserir um elemento no inĂ­cio da lista.
  • `insertAt` deve inserir um elemento no meio da lista.
  • `insertAt` deve inserir um elemento no final da lista.
  • `insertAt` deve inserir em uma lista vazia no Ă­ndice `0`.
  • `insertAt` nĂŁo deve modificar a lista para Ă­ndices invĂĄlidos.
  • VocĂȘ deve ter uma `removeAt` função.
  • `removeAt` deve remover o elemento em um Ă­ndice especificado.
  • `removeAt` deve remover o primeiro elemento corretamente.
  • `removeAt` deve remover o Ășltimo elemento corretamente.
  • `removeAt` deve redefinir a lista ao remover o Ășnico elemento.
  • `removeAt` nĂŁo deve modificar a lista para Ă­ndices invĂĄlidos.
  • VocĂȘ deve ter uma `clear` função.
  • `clear` deve remover todos os elementos da lista.
  • `clear` deve permitir que a lista seja reutilizada.

Console