Impressão, topo e tamanho da pilha

Estrutura de Dados: Pilha

Estamos adicionando e removendo elementos, mas ainda não conseguimos acompanhar o crescimento e o topo da pilha.

Como tais funções devem ser implementadas. Neste caso, não há nomes fixos para esses métodos (como o PUSH e POP), mas eles devem ter nomes claros sobre isso.

Para imprimir a pilha, basta implementar o método __repr__ (recomendado para imprimir detalhes de um objeto).

class No:
  def __init__(self, carga=0, anterior=None):
    self.carga = carga
    self.anterior = anterior

  def __repr__(self):
    return '%s -> %s' % (self.carga, self.anterior)

class Pilha:
  def __init__(self):
    self.topo = None

  def is_empty(self):
    return self.topo is None

  def push(self, elemento):
    no = No(elemento)
    no.anterior = self.topo
    self.topo = no

  def pop(self):
    assert self.topo != None, "Impossível remover elemento de pilha vazia."
    self.topo = self.topo.anterior

  def __repr__(self):
    return "[" + str(self.topo) + "]"

Verificar o topo da pilha

Outra operação importante, é a verificação do topo da pilha. Para isso basta acessar o atributo topo do objeto pilha.

Tamanho da Pilha

Por fim, outra operação importante é a de verificação do tamanho da pilha. Faremos definindo um método __len__ para a nossa estrutura encadeada.

E nossa classe Pilha ficará assim:

Last updated

Was this helpful?