SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
CIRO RAFAEL FEITOSA LOPES
GRADUANDO S.I - UAST/UFRPE
class No:
def __init__(self,dado):
self.dado = dado
self.proximo = None
self.anterior = None
class Lista:
def __init__(self):
self.inicio = None
self.fim = None
self.__tamanho = 0
def vazia(self):
if self.inicio is None:
return True
return False
def add_inicio(self, valor):
no = No(valor)
if self.vazia():
self.inicio = self.fim = no
else:
no.proximo = self.inicio
self.inicio.anterior = no
no.anterior = None
self.inicio = no
self.__tamanho += 1
def add_fim(self, valor):
no = No(valor)
if self.vazia():
self.inicio = self.fim = no
else:
self.fim.proximo = no
no.anterior = self.fim
no.proximo = None
self.fim = no
self.__tamanho += 1
def inserir(self, i, valor):
metade = int(self.__tamanho / 2)
if i > self.__tamanho:
raise IndexError ("Posição de memória inválida")
elif i == self.__tamanho:
self.add_fim(valor)
CIRO RAFAEL FEITOSA LOPES
GRADUANDO S.I - UAST/UFRPE
elif i == 0:
self.add_inicio(valor)
else:
if i <= metade:
no = No(valor)
perc = self.inicio
cont = 0
while cont < i - 1:
perc = perc.proximo
cont += 1
no.proximo = perc.proximo
perc.proximo.anterior = no
perc.proximo = no
no.anterior = perc
else:
no = No(valor)
perc = self.fim
cont = self.__tamanho
while cont > i:
perc = perc.anterior
cont -= 1
no.proximo = perc.proximo
perc.proximo.anterior = no
perc.proximo = no
no.anterior = perc
self.__tamanho += 1
def remover_inicio(self):
if self.vazia():
raise TypeError("Lista está vazia!")
elif self.__tamanho == 1:
self.inicio = None
self.fim = None
else:
self.inicio = self.inicio.proximo
self.inicio.anterior = None
self.__tamanho -= 1
def remover_fim(self):
if self.vazia():
raise TypeError("Lista está vazia!")
elif self.__tamanho == 1:
self.inicio = None
self.fim = None
else:
self.fim = self.fim.anterior
self.fim.proximo = None
self.__tamanho -= 1
CIRO RAFAEL FEITOSA LOPES
GRADUANDO S.I - UAST/UFRPE
def remover_index(self, i):
if self.vazia(): #self.inicio is None:
raise TypeError("Lista está vazia!")
elif i == 0:
self.remover_inicio()
elif i == self.__tamanho - 1:
self.remover_fim()
else:
perc = self.inicio
cont = 0
while cont < i -1:
perc = perc.proximo
cont += 1
aux = perc.proximo
perc.proximo = aux.proximo
aux.proximo.anterior = perc
aux = None
self.__tamanho -= 1
def remover_valor(self, elemento):
if self.__tamanho == 0:
return None
perc = self.inicio
cont = 0
while perc.elemento != elemento:
perc = perc.proximo
cont += 1
self.remover_index(cont)
def buscarIndex(self,idc):
perc=self.inicio
cont=0
while cont<self.tamanho:
if cont==idc:
return f'No indice {idc} tem valor {perc.dado}. '
perc=perc.proximo
cont+=1
raise IndexError('list out of range')
def buscarValor(self,elem):
perc=self.inicio
cont=0
while perc:
if perc.dado==elem:
return f'{elem} está na posição {cont}.'
perc=perc.proximo
cont+=1
CIRO RAFAEL FEITOSA LOPES
GRADUANDO S.I - UAST/UFRPE
raise ValueError(f'{elem} não está na lista.')
def sobrescrever(self, index, elemento):
perc = self.inicio
cont = 0
while cont != index:
perc = perc.proximo
cont += 1
perc.elemento = elemento
def get_tamanho(self):
return self.__tamanho
def get_index(self, i):
perc = self.inicio
cont = 0
while cont < self.__tamanho:
if cont == i:
return perc.dado
perc = perc.proximo
cont += 1
def countPorValor(self, var):
cont=0
perc=self.inicio
while perc:
if perc.dado==var:
cont+=1
perc=perc.proximo
print(f'{var} aparece {cont} vezes na lista.')
def __str__(self):
valor = '['
if self.inicio is not None:
perc = self.inicio
valor += str(perc.dado)
while perc.proximo is not None:
perc = perc.proximo
valor += ', '
valor += str(perc.dado)
valor += ']'
return valor
def __len__(self):
return self.get_tamanho()
def __getitem__(self, item):#aqui é pra exibi desse jeito: lista[5] exibindo o valor em seguida
CIRO RAFAEL FEITOSA LOPES
GRADUANDO S.I - UAST/UFRPE
if item >= self.__tamanho:
raise StopIteration
return self.get_index(item)
def __setitem__(self, key, value):
return self.sobrescrever(key, value)
lista = Lista()
lista.add_inicio(2)
lista.add_fim(1)
lista.add_fim(3)
lista.add_inicio(0)
lista.inserir(2,2)
lista.inserir(1,1)
lista.remover_index(3)
print(lista)
print(lista[0])
print(lista.buscarValor(3))

Mais conteúdo relacionado

Mais procurados

ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - OrdenaçãoAnderson Zardo
 
Operações em Árvores Binárias
Operações em Árvores BináriasOperações em Árvores Binárias
Operações em Árvores Bináriaselliando dias
 
sorting and searching.pptx
sorting and searching.pptxsorting and searching.pptx
sorting and searching.pptxParagAhir1
 
Encontrar o MAIOR e o MENOR elemento da Lista Encadeada
Encontrar o MAIOR e o MENOR elemento da Lista EncadeadaEncontrar o MAIOR e o MENOR elemento da Lista Encadeada
Encontrar o MAIOR e o MENOR elemento da Lista EncadeadaElaine Cecília Gatto
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasAdriano Teixeira de Souza
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integraisDiego Rodrigues Vaz
 
Tabela Ascii
Tabela AsciiTabela Ascii
Tabela Asciijkolive
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - MatrizesLoiane Groner
 
Data Structures- Part5 recursion
Data Structures- Part5 recursionData Structures- Part5 recursion
Data Structures- Part5 recursionAbdullah Al-hazmy
 

Mais procurados (20)

ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - Ordenação
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Tabela Hash com Lista Encadeada
Tabela Hash com Lista EncadeadaTabela Hash com Lista Encadeada
Tabela Hash com Lista Encadeada
 
Operações em Árvores Binárias
Operações em Árvores BináriasOperações em Árvores Binárias
Operações em Árvores Binárias
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
 
sorting and searching.pptx
sorting and searching.pptxsorting and searching.pptx
sorting and searching.pptx
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Encontrar o MAIOR e o MENOR elemento da Lista Encadeada
Encontrar o MAIOR e o MENOR elemento da Lista EncadeadaEncontrar o MAIOR e o MENOR elemento da Lista Encadeada
Encontrar o MAIOR e o MENOR elemento da Lista Encadeada
 
Paa algoritmos gulosos
Paa  algoritmos gulososPaa  algoritmos gulosos
Paa algoritmos gulosos
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Estrutura de Dados - Ponteiros
Estrutura de Dados - PonteirosEstrutura de Dados - Ponteiros
Estrutura de Dados - Ponteiros
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listas
 
Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integrais
 
Tabela Ascii
Tabela AsciiTabela Ascii
Tabela Ascii
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
 
Data Structures- Part5 recursion
Data Structures- Part5 recursionData Structures- Part5 recursion
Data Structures- Part5 recursion
 

Último

DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Bloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docxBloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docxkellyneamaral
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 

Último (20)

DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Bloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docxBloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docx
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 

Lista duplamente encadeada em python

  • 1. CIRO RAFAEL FEITOSA LOPES GRADUANDO S.I - UAST/UFRPE class No: def __init__(self,dado): self.dado = dado self.proximo = None self.anterior = None class Lista: def __init__(self): self.inicio = None self.fim = None self.__tamanho = 0 def vazia(self): if self.inicio is None: return True return False def add_inicio(self, valor): no = No(valor) if self.vazia(): self.inicio = self.fim = no else: no.proximo = self.inicio self.inicio.anterior = no no.anterior = None self.inicio = no self.__tamanho += 1 def add_fim(self, valor): no = No(valor) if self.vazia(): self.inicio = self.fim = no else: self.fim.proximo = no no.anterior = self.fim no.proximo = None self.fim = no self.__tamanho += 1 def inserir(self, i, valor): metade = int(self.__tamanho / 2) if i > self.__tamanho: raise IndexError ("Posição de memória inválida") elif i == self.__tamanho: self.add_fim(valor)
  • 2. CIRO RAFAEL FEITOSA LOPES GRADUANDO S.I - UAST/UFRPE elif i == 0: self.add_inicio(valor) else: if i <= metade: no = No(valor) perc = self.inicio cont = 0 while cont < i - 1: perc = perc.proximo cont += 1 no.proximo = perc.proximo perc.proximo.anterior = no perc.proximo = no no.anterior = perc else: no = No(valor) perc = self.fim cont = self.__tamanho while cont > i: perc = perc.anterior cont -= 1 no.proximo = perc.proximo perc.proximo.anterior = no perc.proximo = no no.anterior = perc self.__tamanho += 1 def remover_inicio(self): if self.vazia(): raise TypeError("Lista está vazia!") elif self.__tamanho == 1: self.inicio = None self.fim = None else: self.inicio = self.inicio.proximo self.inicio.anterior = None self.__tamanho -= 1 def remover_fim(self): if self.vazia(): raise TypeError("Lista está vazia!") elif self.__tamanho == 1: self.inicio = None self.fim = None else: self.fim = self.fim.anterior self.fim.proximo = None self.__tamanho -= 1
  • 3. CIRO RAFAEL FEITOSA LOPES GRADUANDO S.I - UAST/UFRPE def remover_index(self, i): if self.vazia(): #self.inicio is None: raise TypeError("Lista está vazia!") elif i == 0: self.remover_inicio() elif i == self.__tamanho - 1: self.remover_fim() else: perc = self.inicio cont = 0 while cont < i -1: perc = perc.proximo cont += 1 aux = perc.proximo perc.proximo = aux.proximo aux.proximo.anterior = perc aux = None self.__tamanho -= 1 def remover_valor(self, elemento): if self.__tamanho == 0: return None perc = self.inicio cont = 0 while perc.elemento != elemento: perc = perc.proximo cont += 1 self.remover_index(cont) def buscarIndex(self,idc): perc=self.inicio cont=0 while cont<self.tamanho: if cont==idc: return f'No indice {idc} tem valor {perc.dado}. ' perc=perc.proximo cont+=1 raise IndexError('list out of range') def buscarValor(self,elem): perc=self.inicio cont=0 while perc: if perc.dado==elem: return f'{elem} está na posição {cont}.' perc=perc.proximo cont+=1
  • 4. CIRO RAFAEL FEITOSA LOPES GRADUANDO S.I - UAST/UFRPE raise ValueError(f'{elem} não está na lista.') def sobrescrever(self, index, elemento): perc = self.inicio cont = 0 while cont != index: perc = perc.proximo cont += 1 perc.elemento = elemento def get_tamanho(self): return self.__tamanho def get_index(self, i): perc = self.inicio cont = 0 while cont < self.__tamanho: if cont == i: return perc.dado perc = perc.proximo cont += 1 def countPorValor(self, var): cont=0 perc=self.inicio while perc: if perc.dado==var: cont+=1 perc=perc.proximo print(f'{var} aparece {cont} vezes na lista.') def __str__(self): valor = '[' if self.inicio is not None: perc = self.inicio valor += str(perc.dado) while perc.proximo is not None: perc = perc.proximo valor += ', ' valor += str(perc.dado) valor += ']' return valor def __len__(self): return self.get_tamanho() def __getitem__(self, item):#aqui é pra exibi desse jeito: lista[5] exibindo o valor em seguida
  • 5. CIRO RAFAEL FEITOSA LOPES GRADUANDO S.I - UAST/UFRPE if item >= self.__tamanho: raise StopIteration return self.get_index(item) def __setitem__(self, key, value): return self.sobrescrever(key, value) lista = Lista() lista.add_inicio(2) lista.add_fim(1) lista.add_fim(3) lista.add_inicio(0) lista.inserir(2,2) lista.inserir(1,1) lista.remover_index(3) print(lista) print(lista[0]) print(lista.buscarValor(3))