public void Empilhar(T elemento)
        {
            Celula <T> nova = new Celula <T>(elemento);

            if (TotalDeElementos == 0)
            {
                Topo   = nova;
                Inicio = nova;
            }
            else
            {
                Topo.Proxima  = nova;
                nova.Anterior = Topo;
                Topo          = nova;
            }
            TotalDeElementos++;
        }
        public void Desempilhar()
        {
            if (EstaVazia())
            {
                throw new Exception("Pilha vazia");
            }

            if (TotalDeElementos == 1)
            {
                Topo   = null;
                Inicio = null;
            }
            else if (Topo != null)
            {
                Topo.Anterior.Proxima = null;
                Topo = Topo.Anterior;
            }
            TotalDeElementos--;
        }
        public override string ToString()
        {
            // Verificando se a Lista esta vazia
            if (TotalDeElementos == 0)
            {
                return("[]");
            }
            StringBuilder builder = new StringBuilder("[");

            Celula <T> atual = Inicio;

            // Percorrendo ate o penultimo elemento.
            for (int i = 0; i < TotalDeElementos - 1; i++)
            {
                builder.Append(atual.Elemento);
                builder.Append(", ");
                atual = atual.Proxima;
            }
            // ultimo elemento
            builder.Append(atual.Elemento);
            builder.Append("]");
            return(builder.ToString());
        }
 public void Limpar()
 {
     Topo             = null;
     Inicio           = null;
     TotalDeElementos = 0;
 }