Buscar

Estruturas de Dados em Python

Prévia do material em texto

class No:
 def _init_(self, dado=None):
 self.dado = dado
 self.proximo = None
class ListaLigada:
 def _init_(self):
 self.inicio = None
 self.fim = None
 def inserir_inicio(self, dado):
 novo_no = No(dado)
 if self.inicio is None:
 self.inicio = novo_no
 self.fim = novo_no
 else:
 novo_no.proximo = self.inicio
 self.inicio = novo_no
 def inserir_fim(self, dado):
 novo_no = No(dado)
 if self.inicio is None:
 self.inicio = novo_no
 self.fim = novo_no
 else:
 self.fim.proximo = novo_no
 self.fim = novo_no
 def remover_inicio(self):
 if self.inicio is None:
 return None
 dado = self.inicio.dado
 if self.inicio == self.fim:
 self.inicio = None
 self.fim = None
 else:
 self.inicio = self.inicio.proximo
 return dado
 def remover_fim(self):
 if self.inicio is None:
 return None
 dado = self.fim.dado
 if self.inicio == self.fim:
 self.inicio = None
 self.fim = None
 else:
 no_atual = self.inicio
 while no_atual.proximo != self.fim:
 no_atual = no_atual.proximo
 no_atual.proximo = None
 self.fim = no_atual
 return dado
 def listar(self):
 lista = []
 no_atual = self.inicio
 while no_atual:
 lista.append(no_atual.dado)
 no_atual = no_atual.proximo
 return lista
 def tamanho(self):
 return len(self.listar())
class Fila:
 def _init_(self):
 self.fila = ListaLigada()
 def inserir(self, dado):
 self.fila.inserir_fim(dado)
 def remover(self):
 return self.fila.remover_inicio()
class Pilha:
 def _init_(self):
 self.pilha = ListaLigada()
 def inserir(self, dado):
 self.pilha.inserir_inicio(dado)
 def remover(self):
 return self.pilha.remover_inicio()
pilha = Pilha()
fila = Fila()
ll = ListaLigada()
def print_passo(n, ll, pilha, fila):
 print("\nPasso",n,":")
 print("Lista:")
 print(ll.listar())
 print("Pilha:")
 print(pilha.pilha.listar())
 print("Fila:")
 print(fila.fila.listar())
#1
for item in range(1, 6):
 ll.inserir_inicio(item)
print_passo(1, ll, pilha, fila)
#2
for i in range(ll.tamanho()):
 pilha.inserir(ll.remover_inicio())
print_passo(2, ll, pilha, fila)
#3
for i in range(pilha.pilha.tamanho()):
 fila.inserir(pilha.remover())
print_passo(3, ll, pilha, fila)
#4
for item in range(6, 11):
 ll.inserir_inicio(item)
print_passo(4, ll, pilha, fila)
#5
for i in range(ll.tamanho()):
 pilha.inserir(ll.remover_inicio())
for i in range(pilha.pilha.tamanho()):
 fila.inserir(pilha.remover())
print_passo(5, ll, pilha, fila)
#6
print("\nPasso 6 :")
print(fila.fila.listar(), "\n")

Mais conteúdos dessa disciplina