예제 #1
0
 public void Adiciona(int posicao, T elemento)
 {
     if (posicao < 0 || posicao >= Tamanho())
     {
         throw new Exception("A Posição " + posicao + " é Inválida!");
     }
     else
     {
         Celula       nova = new Celula(elemento);
         Iterador <T> it   = new Iterador <T>(Inicio);
         int          i    = 0;
         while (it.HasNext())
         {
             if (i != posicao - 1)
             {
                 it.Next();
                 i++;
             }
             else
             {
                 nova.SetProximo(it.GetAtual().GetProximo());
                 it.GetAtual().SetProximo(nova);
                 i++;
             }
         }
         TamanhoLista++;
     }
 }
예제 #2
0
 //Método que remove da lista em uma determinada posição
 public void Remove(int posicao)
 {
     if (posicao <= 0 || posicao > Tamanho())
     {
         throw new Exception("A Posição " + posicao + " é Inválida!");
     }
     else if (posicao == Tamanho())
     {
         RemoveFim();
         TamanhoLista--;
     }
     else
     {
         Iterador <T> it = new Iterador <T>(Inicio);
         int          i  = 0;
         while (it.HasNext())
         {
             if (i != posicao - 1)
             {
                 it.Next();
                 i++;
             }
             else
             {
                 it.GetAtual().GetProximo().GetProximo().SetAnterior(it.GetAtual());
                 it.GetAtual().SetProximo(it.GetAtual().GetProximo().GetProximo());
                 i++;
             }
         }
         TamanhoLista--;
     }
 }
예제 #3
0
        public T Recupera(int posicao)
        {
            if (TamanhoLista == 0)
            {
                throw new Exception("A lista está vazia!!");
            }
            else if (posicao < 0 || posicao >= Tamanho())
            {
                throw new Exception("A Posição " + posicao + " é Inválida!");
            }
            else
            {
                Iterador <T> it = new Iterador <T>(Inicio);
                int          i  = 0;
                while (it.HasNext())
                {
                    if (i != posicao)
                    {
                        it.Next();
                        i++;
                    }
                    else
                    {
                        break;
                    }
                }

                return((T)it.GetAtual().GetElemento());
            }
        }
예제 #4
0
 //Método que remove da lista em uma determinada posição
 public void Remove(int posicao)
 {
     if (posicao < 0 || posicao >= Tamanho())
     {
         throw new Exception("A Posição " + posicao + " é Inválida!");
     }
     else
     {
         Celula       novoInicio   = new Celula(Inicio.GetProximo(), Inicio.GetElemento());
         Iterador <T> it           = new Iterador <T>(Inicio);
         Iterador <T> itNovoInicio = new Iterador <T>(novoInicio);
         int          i            = 0;
         while (it.HasNext())
         {
             if (i != posicao - 1)
             {
                 itNovoInicio.Next();
                 it.Next();
                 i++;
             }
             else
             {
                 itNovoInicio.Next();
                 it.GetAtual().SetProximo(itNovoInicio.GetAtual().GetProximo());
                 i++;
             }
         }
         TamanhoLista--;
     }
 }