def inserir(self, index, Novoelemento): # cria o nó com o novo elemento no = No(Novoelemento) #Se quiser inserir na primeira posição da lista if index == 0: # O item de inicio da lista (não atualizada) se torna o no.proximo no.proximo = self.inicio #Atualiza o inicio da lista para o nó que entrou self.inicio = no #se quiser inserir numa posição diferente de 0 else: #ponteiro começa na primeira posição #ponteiro = self.inicio #O -1 é para que possamos inserir após seu precessor, no local correto da lista #for item in range(index - 1): #se o ponteiro não está numa posição vazia(none), último da lista #if ponteiro: #O ponteiro "anda" para o próximo da lista #ponteiro = ponteiro.proximo #else: #raise IndexError("Index fora do intervalo da Lista") #A parte acima do código virou a função a parte getNo() #O -1 garante que o item a ser incerido fique na posição correta ponteiro = self.getNo(index - 1) #garante que os próximos valores serão "apontados" no.proximo = ponteiro.proximo ponteiro.next = no #aumenta o tamanho da lista em 1 self.tamanho += 1
def inserir(self, index, Novoelemento): no = No(Novoelemento) if index == 0: no.proximo = self.inicio self.inicio = no else: ponteiro = self.getNo(index-1) no.proximo = ponteiro.proximo ponteiro.next = no self.tamanho += 1
def addFirst(self, dado): no = No(dado) if self.head == None: self.tail = no else: no.proximo = self.head self.head.anterior = no self.head = no no.indice += 1
def indexInsercaoOrdem(self, elemento): no = No(elemento) posicao = 0 ponteiro = self.inicio try: prox = ponteiro.proximo except: prox = None #se a lista estiver vazia if self.inicio == None: self.inicio = no self.tamanho += 1 return True #se o o dado for menor de todos, primeiro da lista if elemento < ponteiro.dado: no.proximo = self.inicio self.inicio = no self.tamanho += 1 return True else: while True: #se for o último da lista if prox == None: ponteiro.proximo = no self.tamanho +=1 return True if elemento <= prox.dado: ponteiro.proximo = no no.proximo = prox self.tamanho +=1 return True if elemento > prox.dado: ponteiro = prox prox = prox.proximo posicao += 1
def inserir_qualquer_lugar(self, valor, valor_busca): no = self.inicio novo_valor = No(valor) while no is not None: if no.valor == valor_busca and no.proximo == None: no.proximo = novo_valor novo_valor.anterior = no self.quantidade += 1 break elif no.valor == valor_busca and no.proximo is not None: proximo_no = no.proximo novo_valor.anterior = no no.proximo = novo_valor novo_valor.proximo = proximo_no self.quantidade += 1 break elif no.valor != valor_busca and no.proximo == None: print("Erro") return "Erro" no = no.proximo
def inserirInicio(self, info): temp = No(info) temp.proximo = self.inicio self.inicio = temp