Advertisement
fahadkalil

lse_14-04-2020

Apr 28th, 2020
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.44 KB | None | 0 0
  1. class Nodo:
  2.     def __init__(self, dado):
  3.         self.dado = dado
  4.         self.proximo = None
  5.  
  6.     def __str__(self):
  7.         return str(self.dado)
  8.  
  9. # ##############################
  10. # Lista Simplesmente Encadeada
  11. # [NODO] => [NODO] => None
  12. class LSE:
  13.     def __init__(self):
  14.         self.head = None # cabeca | inicio
  15.         self.tail = None # cauda  | fim
  16.         self.tam = 0     # quantidade de elementos
  17.  
  18.     def is_empty(self): # retorna se a lista esta vazia
  19.         if (self.head is None and self.tail is None):
  20.             return True
  21.         return False
  22.        
  23.     def inserirFim(self, novo): # similar ao append da List
  24.         self.tam += 1        
  25.         if self.is_empty():
  26.             # lista vazia
  27.             self.head = novo
  28.             self.tail = novo            
  29.         else:
  30.             # ja possui itens
  31.             ## o tail atual deve apontar para o novo
  32.             ## o tail sera atribuido para o novo
  33.             ultimo = self.tail
  34.             ultimo.proximo = novo
  35.             self.tail = novo            
  36.  
  37.     def inserirInicio(self, novo): # similar ao insert(0,item) da List
  38.         self.tam += 1
  39.         if self.is_empty():
  40.             self.head = novo
  41.             self.tail = novo
  42.         else:
  43.             # obtem o atual head
  44.             # refaz apontamentos
  45.             pass      
  46.        
  47.     def removerInicio(self):
  48.         if self.is_empty():
  49.             print('Lista Vazia!')
  50.             return
  51.  
  52.         self.tam -= 1 # diminui o contador de itens
  53.        
  54.         ## quando temos apenas 1 item
  55.         if (self.head == self.tail):
  56.             pass
  57.  
  58.         # lista possui + de 1 item              
  59.         else:            
  60.             pass
  61.            
  62.         return removido
  63.    
  64.     def removerFim(self):
  65.         if self.is_empty():
  66.             print('Lista Vazia!')
  67.            
  68.         ## precisamos descobrir quem eh o penultimo da lista!!
  69.         removido = None
  70.         item = self.head
  71.         while (item != None):
  72.             # quando tem apenas 1 item
  73.             if (item == self.tail and item == self.head):
  74.                 self.head = None
  75.                 self.tail = None
  76.                 self.tam -= 1
  77.                 return item
  78.  
  79.             # quando tem mais de 1
  80.             if (item.proximo != None and item.proximo == self.tail):
  81.                 removido = self.tail
  82.                 self.tail = item
  83.                 item.proximo = None
  84.                 self.tam -= 1
  85.                 return removido
  86.            
  87.             item = item.proximo
  88.            
  89.     def buscar(self, valor):
  90.         if self.is_empty():
  91.             print('Lista Vazia')
  92.             return
  93.  
  94.         pass
  95.    
  96.     def imprimir(self):
  97.         if (self.head is None and self.tail is None):
  98.             print('Lista Vazia')
  99.             return
  100.            
  101.         item = self.head
  102.         while (item != None):
  103.             print(item)
  104.             item = item.proximo
  105.  
  106.     def imprimirLadoALado(self):
  107.         saida = ''
  108.         item = self.head
  109.         while (item != None):
  110.             if item == self.head:
  111.                 saida += '[' + str(item) + ']'
  112.             else:
  113.                 saida += ' => ' + '[' + str(item) + ']'
  114.             item = item.proximo
  115.         print(saida)
  116.  
  117.  
  118. ## TESTES ##
  119.  
  120. lista = LSE()
  121. lista.inserirFim( Nodo("ABC") )
  122. lista.inserirFim( Nodo("DEF") )
  123. #lista.inserirInicio( Nodo("123") )
  124. #lista.removerFim()
  125. lista.imprimirLadoALado()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement