Tarefa 2 – Leia o fragmento, interprete o código Python em questão e responda as questões abaixo.
1. def remove(self, valor):
2. if self.head.data == valor:
3. self.head = self.head.nextItem
4. else:
5. before = None
6. navegar = self.head
7. while navegar and navegar.data != valor:
8. before = navegar
9. navegar = navegar.nextItem
10. if navegar:
11. before.nextItem = navegar.nextItem
12. else:
13. before.nextItem = None
a) descreva como o método recebe o valor:
b) não sendo o método, como será a busca? Lembre-se do head.
c) quais alterações ocorrerá na lista?
Respostas
Resposta:
a função remove que recebe o parâmetro chamado valor e recebe o parâmetro durante a chamada de função, e o outro paramento por nome de self que é herdada da classe. Na segunda linha e feito a verificação se o conteúdo da lista recebido no parâmetro self é igual ao da variável valor e caso a condição seja atendida, será executada a terceira linha, a lista self recebe o próximo item, se condição na linha anterior não for atendida, o compilador executa a quarta linha, seguindo para a quinta linha e criado uma variável before que recebe um valor vazio, na sexta linha é criado a variável navegar que recebe os itens da lista self. Na sétima linha começa um loop while verificando itens na variável navegar, será executado o seguinte trecho de código, a variável before recebe os itens da variável navega, nove a variável navegar recebe o próximo item. linha dez é executado um teste lógico verificando os itens na lista navegar e caso essa condição for atendida o código vai ser executado o próximo tem da variável before vai receber o próximo item da lista navegar, e caso o teste lógico não seja atendido será executado a exceção else próximo item da variável before vai receber o valor vazio.
Explicação:
fonte explicação propia
I) O método recebe o valor que será removido e navega por toda a lista em busca do valor. Inicialmente, deve-se verificar se o valor buscado corresponde ao item do cabeçalho (remoção mais simples).
II) Se não for o método deve buscar o anterior e o próximo (baseado no head).
III) O valor correspondente ao próximo item é alterado, não sendo necessário assim alterar toda a lista, e sim apenas os itens anterior e posterior diretamente envolvidos.