Pesquisa de site

Imprimir lista vinculada em Python


Imprimir uma lista vinculada de maneira bem formatada e legível é essencial para fins de compreensão e depuração, o que pode ser feito facilmente usando a função Pretty print do Python. Este artigo explora como implementar uma funcionalidade de impressão bonita para listas vinculadas em Python.

Ao apresentar os nós e suas informações associadas de forma organizada e visualmente atraente, os desenvolvedores podem visualizar facilmente a estrutura da lista vinculada, auxiliando na compreensão e na resolução eficiente de problemas. Descubra como aumentar a clareza de suas listas vinculadas com os poderosos recursos do Python.

Como imprimir uma lista vinculada em Python?

Abaixo estão as etapas que seguiremos para imprimir uma lista vinculada em Python -

Etapas (algoritmo)

  • Primeiro, definimos a classe chamada Node, que representa um único nó na lista vinculada. Cada nó possui o próximo ponteiro e atributos de dados.

  • A seguir, definimos a classe LinkedList, que gerencia a lista vinculada. Possui um atributo head, que aponta para o primeiro nó da lista. Inicialmente, o cabeçalho é definido como Nenhum para indicar uma lista vazia.

  • O método add_node é usado para adicionar nós à lista vinculada. Leva um parâmetro de dados como entrada. Dentro do método, criamos um novo objeto Node com os dados fornecidos. Se a lista vinculada estiver vazia (ou seja, head for None), definimos o novo nó como head. Caso contrário, percorremos até o final da lista começando do início e passando para o próximo nó até chegar ao último nó. Finalmente, acrescentamos o novo nó ao final da lista atualizando o próximo atributo do último nó.

  • O método pretty_print é usado para imprimir a lista vinculada em um formato legível. Se a lista vinculada estiver vazia (ou seja, head for None), será impressa uma mensagem indicando que a lista está vazia. Caso contrário, ele percorre cada nó começando pela cabeça. Ele rastreia o número do nó usando uma variável de contagem e imprime os dados de cada nó junto com seu número correspondente. O método continua esse processo até chegar ao final da lista.

  • O método get_length calcula e retorna o comprimento da lista vinculada. Ele começa na cabeça e percorre cada nó, incrementando uma variável de comprimento para cada nó encontrado. Finalmente, retorna o comprimento total da lista.

  • Em seguida, chamamos o método pretty_print no objeto linked_list para exibir o conteúdo da lista. Isso imprimirá os dados de cada nó junto com seu número correspondente.

  • Finalmente, chamamos o método get_length no objeto linked_list para calcular e imprimir o comprimento da lista.

Se quisermos modificar o programa, siga os passos abaixo -

  • Você pode adicionar métodos adicionais para realizar diversas operações na lista vinculada, como pesquisar um valor específico, excluir um nó ou inserir um nó em uma posição específica. Esses métodos podem ser adicionados à classe LinkedList.

  • Se desejar customizar a classe do nó, você poderá adicionar mais atributos à classe Node para armazenar informações adicionais.

  • Você pode aprimorar o método pretty_print para exibir mais informações sobre cada nó. Por exemplo, você pode imprimir o endereço de memória de cada nó ou imprimir um símbolo de seta para indicar os links entre os nós.

  • Você pode modificar o método add_node para inserir nós no início da lista em vez de no final.

  • Você pode implementar métodos para reverter a lista vinculada, mesclar duas listas vinculadas ou dividir a lista vinculada em duas listas separadas.

Exemplo

No exemplo de uso abaixo, criamos um objeto LinkedList, adicionamos nós com valores 10, 20, 30, 40 e 50 e, em seguida, chamamos o método pretty_print para exibir a lista. Finalmente, chamamos o método get_length para recuperar o comprimento da lista vinculada e imprimi-la.

class Node:
   def __init__(self, d):
      self.d = d
      self.next = None

class LinkedList:
   def __init__(self):
      self.head = None

   def add_node(self, d):
      new_node = Node(d)
      if self.head is None:
         self.head = new_node
      else:
         curr = self.head
         while curr.next:
              curr = curr.next
         curr.next = new_node

   def pretty_print(self):
      if self.head is None:	
         print("Linked list is empty.")
      else:
         curr = self.head
         count = 1
         while curr:
            print(f"Node {count}: {curr.d}")
            curr = curr.next
            count += 1

   def get_length(self):
      length = 0
      curr = self.head
      while curr:
         length += 1
         curr = curr.next
      return length


# Example usage
linked_list1 = LinkedList()
linked_list1.add_node(10)
linked_list1.add_node(20)
linked_list1.add_node(30)
linked_list1.add_node(40)
linked_list1.add_node(50)

linked_list1.pretty_print()
print(f"Length: {linked_list1.get_length()}")

Saída

Node 1: 10
Node 2: 20
Node 3: 30
Node 4: 40
Node 5: 50
Length: 5

Conclusão

Concluindo, podemos dizer que ao implementar uma funcionalidade de impressão bonita para listas vinculadas em Python, os desenvolvedores podem melhorar muito a legibilidade e a visualização de suas estruturas de dados. A representação clara e organizada de listas vinculadas facilita a compreensão e a depuração, permitindo a resolução eficiente de problemas. Com a flexibilidade do Python, melhorar a clareza das listas vinculadas torna-se uma tarefa simples para qualquer programador.

Artigos relacionados: