コード例 #1
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());
            }
        }
コード例 #2
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++;
     }
 }
コード例 #3
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--;
     }
 }
コード例 #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--;
     }
 }
コード例 #5
0
        //Método que remove do vetor em uma determinada posição
        public void Remove(int posicao)
        {
            if ((posicao < 0 && posicao > Tamanho()) || (!ExisteDado(posicao)))
            {
                throw new Exception("Posição Inválida");
            }

            Iterador <T> it = new Iterador <T>(vetor);
            int          i  = 0;

            while (it.HasNext())
            { //percorrendo o vetor usando iterador
                T item;
                item = (T)Convert.ChangeType(it.Next(), typeof(T));
                if (item != null)
                {
                    if (EqualityComparer <T> .Default.Equals(item, vetor[posicao]))
                    {
                        vetor[i] = vetor[i + 1];
                    }
                }
                i++;
            }
            qntElementos--;
        }
コード例 #6
0
        //Método que adiciona no vetor
        public void AdicionaInicio(T elemento)
        {
            if (Tamanho() == vetor.Length)
            {
                Redimensionar();
            }

            T elementoInicio;

            elementoInicio = vetor[0];
            vetor[0]       = elemento;

            Iterador <T> it = new Iterador <T>(vetor);
            int          i  = 2;
            T            elementoAnterior = vetor[1];

            vetor[1] = elementoInicio;
            while (it.HasNext())
            { //percorrendo o vetor usando iterador
                if (it.Next() != null)
                {
                    if (i < (vetor.Length))
                    {
                        T elementoAtual = vetor[i];
                        vetor[i]         = elementoAnterior;
                        elementoAnterior = elementoAtual;
                    }
                }
                i++;
            }
            qntElementos++;
        }
コード例 #7
0
        //Método que dobra o tamanho do vetor caso ele atinja o seu tamanho.
        public void Redimensionar()
        {
            T[] vetorCopia = new T[qntElementos];
            vetorCopia = vetor;
            vetor      = new T[qntElementos * 2];
            Iterador <T> it = new Iterador <T>(vetorCopia);
            int          i  = 0;

            while (it.HasNext())
            { //percorrendo o vetor usando iterador
                if (it.Next() != null)
                {
                    vetor[i] = vetorCopia[i];
                }
                i++;
            }
        }
コード例 #8
0
        //Método que remove do início do vetor
        public void RemoveInicio()
        {
            Iterador <T> it = new Iterador <T>(vetor);
            int          i  = 0;

            while (it.HasNext())
            { //percorrendo o vetor usando iterador
                if (it.Next() != null)
                {
                    if (i < (vetor.Length - 1))
                    {
                        vetor[i] = vetor[i + 1];
                    }
                    i++;
                }
            }
            qntElementos--;
        }
コード例 #9
0
        //Método que remove do fim do vetor
        public void RemoveFim()
        {
            T[]          vetorNovo = new T[qntElementos];
            Iterador <T> it        = new Iterador <T>(vetor);
            int          i         = 0;

            while (it.HasNext())
            { //percorrendo o vetor usando iterador
                if (it.Next() != null)
                {
                    if (i < (vetor.Length - 2))
                    {
                        vetorNovo[i] = vetor[i];
                    }
                }
                i++;
            }
            vetor = new T[qntElementos];
            vetor = vetorNovo;
            qntElementos--;
        }