Home › Fóruns › Fórum Estrutura de Dados e Algoritmos em Python: O Guia Completo › Exclusão de todos itens númereo procurado
Marcado: Implementação 4 – Exclusão
- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 4 anos, 4 meses atrás por
Jones Granatyr.
- AutorPosts
- 16 de outubro de 2020 às 06:27 #21530
Bom dia
Pensei numa lista onde eu tenha o mesmo número repetido, mas queira excluir todos que estou procurando, não somente o primeiro que encontrar, então pensei em chamar o método de exclusão várias vezes, então pensei num modo recursivo, mas não deu muito certo, pois ele excluiu
outros números da lista também
vetor = VetorNaoOrdenado(10) vetor.insere(2) vetor.insere(3) vetor.insere(5) vetor.insere(8) vetor.insere(1) vetor.insere(7) vetor.imprime() 0 - 2 1 - 3 2 - 5 3 - 8 4 - 1 5 - 7 vetor.insere(5) vetor.insere(3) vetor.insere(5) vetor.imprime() 0 - 2 1 - 3 2 - 5 3 - 8 4 - 1 5 - 7 6 - 5 7 - 3 8 - 5
Vejam que agora alguns números aparecem mais de uma vez na lista, (3 e 5 por exemplo), então pensei implementar um outro método chamado excluir2 que excluiria todos números da lista que estou procurando, tentei implementar como abaixo: def excluir2(self,valor): posicao = self.pesquisar(valor) if posicao == -1: return -1 else: for i in range(posicao,self.ultima_posicao): self.valores[i] = self.valores[i+1] self.ultima_posicao -=1 while posicao != -1: posicao =self.excluir2(valor) , mas ao tentar chamar vetor.excluir2(5) vetor.imprime() 0 - 2 1 - 3 2 - 8 Realmente algo deu errado, sendo assim, qual a melhor maneira de fazer o que estou querendo, por favor , não quero o código pronto,mas somente alguma(s) dica(s), e se o modo recursivo não serve Grato
16 de outubro de 2020 às 16:13 #21531Opa, boa tarde!
Chamar a função mais vezes não é muito bom por causa do desempenho, pois precisará executar a pesquisa linear novamente a cada nova chamada. Ao invés de fazer a recursão, depois de apagar o primeiro número poderia criar um marcador e “reiniciar” o código (talvez uma estrutura de repetição)
Jones
- AutorPosts
- Você deve fazer login para responder a este tópico.