Você está aqui: Python ::: Estruturas de Dados ::: Lista Ligada Simples |
Como inverter a ordem dos nós de uma lista singularmente encadeada em PythonQuantidade de visualizações: 76 vezes |
Vimos de dicas anteriores que as listas ligadas são um tipo de estrutura de dados que consistem de um grupo de nós que, juntos, representam uma sequência. Cada nó guarda uma referência a um valor (ou objeto) e uma referência para o próximo nó na sequência. O nó final na lista ligada tem uma referência para null (vazio), indicando que ele é o final da lista. Inverter uma lista ligada pode ser uma operação útil em várias aplicações e algorítmos. Essa técnica envolve um rearranjo dos nós na lista de forma que a ordem dos nós seja invertida. Veja o código Python completo para o exemplo: # classe No para uma lista singularmente encadeada ou # ligada - Singly Linked List class No: # construtor da classe No def __init__(self, valor, proximo): self.valor = valor self.proximo = proximo # classe ListaLigadaSimples class ListaLigadaSimples: # construtor da classe def __init__(self): self.inicio = None # nó inicial da lista # método que permite inserir um novo nó no final da lista def inserir_final(self, valor): # cria um novo nó contendo a informação e que # não aponta para nenhum outro nó novo_no = No(valor, None) # a lista ainda está vazia? if self.inicio == None: # o novo nó será o início da lista self.inicio = novo_no else: # obtemos uma referência ao nó inicial da lista no_atual = self.inicio # enquanto o próximo nó do nó atual não for nulo while no_atual.proximo != None: # salta para o próximo nó no_atual = no_atual.proximo # na saída do laço nós estamos no final da lista, # ou seja, no local adequada para a nova inserção no_atual.proximo = novo_no # método que permite inverter a ordem dos nós na lista ligada def inverter(self): # criamos dois nós, um para representar o nó anterior e # outro para representar o nó atual anterior = None atual = self.inicio # enquanto o nó atual for diferente de null while atual is not None: # salta para o próximo nó proximo = atual.proximo atual.proximo = anterior anterior = atual atual = proximo # o início da lista aponta para o nó anterior self.inicio = anterior # método que permite exibir todos os nós da lista # ligada simples (lista singularmente encadeada) def exibir(self): # aponta para o início da lista no_atual = self.inicio # enquanto o nó não for nulo while no_atual != None: # exibe o conteúdo do nó atual print(no_atual.valor, end=" ") # pula para o próximo nó no_atual = no_atual.proximo # método principal def main(): # cria uma nova lista encadeada simples lista = ListaLigadaSimples() # vamos inserir 5 valores no final da lista ligada for i in range(5): valor = int(input("Informe o valor a ser inserido na lista: ")) lista.inserir_final(valor) print("\nValores na lista ligada: ", end="") lista.exibir() # agora vamos inverter a ordem dos elementos da lista ligada lista.inverter() print("\nValores na lista ligada (ordem invertida): ", end="") lista.exibir() if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Informe o valor a ser inserido na lista: 6 Informe o valor a ser inserido na lista: 9 Informe o valor a ser inserido na lista: 2 Informe o valor a ser inserido na lista: 4 Informe o valor a ser inserido na lista: 8 Valores na lista ligada: 6 9 2 4 8 Valores na lista ligada (ordem invertida): 8 4 2 9 6 |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |