Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Python ::: Estruturas de Dados ::: Lista Ligada Simples

Como inverter a ordem dos nós de uma lista singularmente encadeada em Python

Quantidade 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

Link para compartilhar na Internet ou com seus amigos:

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

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 22 usuários muito felizes estudando em nosso site.