def modificar(self, posicao, novoValor): try: assert posicao > 0 if self.vazia(): raise Exception( 'Lista vazia. Não é possível remover elementos') p = self.__head contador = 1 while (p != None) and (contador < posicao): p = p.next contador += 1 if p != None: p.data = novoValor return raise Exception('Posição inválida para a lista') except TypeError: raise Exception('A posição deve ser um valor inteiro') except AssertionError: raise Exception('Posição negativa não é válida') except: raise
def elemento(self, posicao): try: assert posicao > 0 if self.vazia(): raise Exception('A lista está vazia') ponteiro = self.__head contador = 1 # Andar na lista while ponteiro != None and contador < posicao: ponteiro = ponteiro.next contador += 1 # Posição encontrada if ponteiro != None: return ponteiro.data raise Exception('A posição é inválida') except TypeError: raise Exception('A posição deve ser um valor inteiro') except AssertionError: raise Exception('Posição negativa não é válida') except: raise
def remover(self, posicao): try: assert posicao > 0 if self.vazia(): raise Exception('Lista vazia. Não é possível remover elementos') p = self.__head contador = 1 while (contador <= posicao - 1) and (p != None): anterior = p p = p.next contador += 1 if p == None: raise Exception('Posição inválida para remoção') if posicao == 1: self.__head = p.next else: anterior.next = p.next self.__tamanho -= 1 except TypeError: raise Exception('A posição deve ser um valor inteiro') except AssertionError: raise Exception('Posição negativa não é válida') except: raise
def inserir(self, posicao, data): try: assert posicao > 0 # CONDIÇÃO 1: Inserção se a lista estiver vazia if self.vazia(): if posicao != 1: raise Exception( 'A lista está vazia. Só poderá ser inserido na posição 1') self.__head = Node(data) self.__tamanho += 1 return # CONDIÇÃO 2: Inserção na primeira posição em uma lista não vazia if posicao == 1: novo = Node(data) novo.next = self.__head self.__head = novo self.__tamanho += 1 return # CONDIÇÃO 3: Inserção após a primeira posição em uma lista não vazia p = self.__head contador = 1 while (contador < posicao-1) and (p != None): p = p.next contador += 1 if p == None: raise Exception('A posição é inválida para inserção') novo = Node(data) novo.next = p.next p.next = novo self.__tamanho += 1 except TypeError: raise Exception('A posição deve ser um valor inteiro') except AssertionError: raise Exception('Posição negativa não é válida') except: raise
def modificar(self, novoValor): if self.vazia(): raise Exception('A pilha está vazia') self.__head.data = novoValor
def elemento(self): if (self.vazia()): raise Exception('A pilha está vazia') return self.__head.data
def remover(self): if self.vazia(): raise Exception('A pilha está vazia') self.__head = self.__head.next self.__tamanho -= 1
def head(self): if self.vazia(): raise Exception('A pilha está vazia') return self.__head