public bool Contem(object elemento)
        {
            Celula <T> atual = Primeira;

            while (atual != null)
            {
                if (atual.Elemento.Equals(elemento))
                {
                    return(true);
                }
            }
            return(false);
        }
        public void AdicionarNoComeco(object elemento)
        {
            Celula <T> nova = new Celula <T>(Primeira, elemento);

            Primeira = nova;

            if (TotalDeElementos == 0)
            {
                //caso especial da lista vazia
                Ultima = Primeira;
            }

            TotalDeElementos++;
        }
 public void Adicionar(object elemento)
 {
     if (TotalDeElementos == 0)
     {
         AdicionarNoComeco(elemento);
     }
     else
     {
         Celula <T> nova = new Celula <T>(elemento);
         Ultima.Proxima = nova;
         Ultima         = nova;
         TotalDeElementos++;
     }
 }
        public void RemoverDoComeco()
        {
            if (!PosicaoOcupada(0))
            {
                throw new ArgumentException("Posição não existe!");
            }

            Primeira = Primeira.Proxima;
            TotalDeElementos--;

            if (TotalDeElementos == 0)
            {
                Ultima = null;
            }
        }
        private Celula <T> PegarCelula(int posicao)
        {
            if (!PosicaoOcupada(posicao))
            {
                throw new ArgumentException("Posição não existe");
            }

            Celula <T> atual = Primeira;

            for (int i = 0; i < posicao; i++)
            {
                atual = atual.Proxima;
            }
            return(atual);
        }
        public void RemoverDoFim()
        {
            if (!PosicaoOcupada(TotalDeElementos - 1))
            {
                throw new ArgumentException("Posição não existe!");
            }

            if (TotalDeElementos == 1)
            {
                RemoverDoComeco();
            }

            Celula <T> penultima = PegarCelula(TotalDeElementos - 2);

            penultima.Proxima = null;
            Ultima            = penultima;
            TotalDeElementos--;
        }
 public void Adicionar(int posicao, object elemento)
 {
     if (posicao == 0)
     {
         // No começo.
         AdicionarNoComeco(elemento);
     }
     else if (posicao == TotalDeElementos)
     {
         // No fim.
         Adicionar(elemento);
     }
     else
     {
         Celula <T> anterior = this.PegarCelula(posicao - 1);
         Celula <T> nova     = new Celula <T>(anterior.Proxima, elemento);
         anterior.Proxima = nova;
         TotalDeElementos++;
     }
 }
        public override string ToString()
        {
            // Verificando se a Lista esta vazia
            if (TotalDeElementos == 0)
            {
                return("[]");
            }
            StringBuilder builder = new StringBuilder("[");

            Celula <T> atual = Primeira;

            // 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 Celula(Celula <T> proxima, object elemento)
 {
     Proxima  = proxima;
     Elemento = elemento;
 }
 public void Limpar()
 {
     Primeira         = null;
     Ultima           = null;
     TotalDeElementos = 0;
 }