Advertisement
joaomro

Lista-encadeada-dupla

Jun 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. class No():
  2.     def __init__(self, dado):
  3.         self._dado = dado
  4.         self._proximo = None
  5.         self._anterior = None
  6.  
  7.     def getDado(self):
  8.         return self._dado
  9.  
  10.     def setDado(self, dado):
  11.         self._dado = dado
  12.  
  13.     def getAnterior(self):
  14.         return self._anterior
  15.  
  16.     def setAnterior(self, anterior):
  17.         self._anterior = anterior
  18.  
  19.     def getProximo(self):
  20.         return self._proximo
  21.  
  22.     def setProximo(self, proximo):
  23.         self._proximo = proximo
  24.  
  25. class ListaEncadeada():
  26.     def __init__(self):
  27.         self._comeco = None
  28.         self._fim = None
  29.  
  30.     def isVazia(self):
  31.         return (self._comeco and self._fim) == None
  32.  
  33.     def __str__(self):
  34.         atual = self._comeco
  35.         saida = ''
  36.         while atual is not None:
  37.             if saida == '':
  38.                 saida = str(atual.getDado())
  39.             else:
  40.                 saida += ' ' + str(atual.getDado())
  41.             atual = atual.getProximo()
  42.         return saida
  43.  
  44.     def adicionar(self, dado):
  45.         novoNo = No(dado)
  46.         if self.isVazia():
  47.             self._comeco = self._fim = novoNo
  48.         else:
  49.             novoNo.setAnterior(self._fim)
  50.             novoNo.setProximo(None)
  51.             self._fim.setProximo(novoNo)
  52.             self._fim = novoNo
  53.            
  54.     def buscar(self, dado):
  55.         no = self._comeco
  56.         anterior = no.getAnterior()
  57.         while no is not None:
  58.             if no.getDado() == dado:
  59.                 return (no, anterior)
  60.             no = no.getProximo()
  61.         return (no, anterior)
  62.  
  63.     def remover(self, dado):
  64.         no, anterior = self.buscar(dado)
  65.         if no is not None:
  66.             if anterior is not None:
  67.                 anterior.setProximo(no.getProximo())
  68.             else:
  69.                 self._comeco = no.getProximo()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement