![]() |
|
||||
Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
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: 389 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
# 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 |






