Пример #1
0
 public void Adiciona(int posicao, T elemento)
 {
     if (posicao <= 0 || posicao > Tamanho())
     {
         throw new Exception("A Posição " + posicao + " é Inválida!");
     }
     else if (posicao == Tamanho())
     {
         AdicionaFim(elemento);
         TamanhoLista++;
     }
     else
     {
         CelulaDupla  nova = new CelulaDupla(elemento);
         Iterador <T> it   = new Iterador <T>(Inicio);
         int          i    = 0;
         while (it.HasNext())
         {
             if (i != posicao - 1)
             {
                 it.Next();
                 i++;
             }
             else
             {
                 nova.SetAnterior(it.GetAtual());
                 nova.SetProximo(it.GetAtual().GetProximo());
                 it.GetAtual().SetProximo(nova);
                 it.GetAtual().GetProximo().GetProximo().SetAnterior(it.GetAtual().GetProximo());
                 i++;
             }
         }
         TamanhoLista++;
     }
 }
Пример #2
0
        public void AdicionaFim(T elemento)
        {
            CelulaDupla nova = new CelulaDupla(elemento);

            if (TamanhoLista == 0)
            {
                Inicio = Fim = nova;
                TamanhoLista++;
            }
            else
            {
                nova.SetAnterior(Fim); //O anterior do novo Nó será o atual ultimo
                Fim.SetProximo(nova);  //O proximo do atual ultimo será o novo Nó
                Fim = nova;            // Atualiza-se o ultimo para o novo Nó
                TamanhoLista++;        // incrementa o tamanho da lista
            }
        }