Exemple #1
0
        public void removeFim()
        {
            if (this.Tamanho == 0)
            {
                throw new ArgumentOutOfRangeException("Argumento fora de alcance.");
            }

            else if (this.primeiro == this.ultimo)
            {
                this.primeiro = null;
                this.ultimo   = null;
                this.Tamanho--;
            }

            else
            {
                this.Tamanho--;
                Celula       atual = this.primeiro;
                Iterador <T> it    = new Iterador <T>(atual);
                while (it.hasNext())
                {
                    for (int i = 0; i != this.Tamanho - 1; i++)
                    {
                        atual       = atual.Proxima;
                        this.ultimo = atual;
                    }
                    break;
                    it.next();
                }
            }
        }
Exemple #2
0
 public T recupera(int posicao)
 {
     if (this.Tamanho == 0 || posicao < 0 || posicao >= this.Tamanho)
     {
         throw new ArgumentOutOfRangeException("Argumento fora de alcance.");
     }
     else
     {
         Celula       atual = this.primeiro;
         Iterador <T> it    = new Iterador <T>(atual);
         while (it.hasNext())
         {
             for (int i = 0; i < posicao; i++)
             {
                 if (atual.Proxima != null)
                 {
                     atual = atual.Proxima;
                 }
             }
             break;
             it.next();
         }
         return((T)(object)atual.Elemento);
     }
 }
Exemple #3
0
        public bool existeDado(T elemento)
        {
            Celula       atual = this.primeiro;
            bool         cond  = false;
            Iterador <T> it    = new Iterador <T>(atual);

            while (it.hasNext())
            {
                for (int i = 0; i < this.Tamanho; i++)
                {
                    if (atual.Elemento.Equals(elemento))
                    {
                        cond = true;
                        break;
                    }

                    if (atual.Proxima != null)
                    {
                        atual = atual.Proxima;
                    }
                    else
                    {
                        break;
                    }
                }
                break;
                it.next();
            }
            return(cond);
        }
Exemple #4
0
        private Celula pegaCelula(int posicao)
        {
            Celula       atual = this.primeiro;
            Iterador <T> it    = new Iterador <T>(atual);

            while (it.hasNext())
            {
                for (int i = 0; i <= posicao; i++)
                {
                    atual = atual.Proxima;
                }
                break;
                it.next();
            }

            return(atual);
        }
Exemple #5
0
        public void adiciona(T elemento, int posicao)
        {
            if (this.Tamanho == 0 || posicao < 0 || posicao > this.Tamanho)
            {
                throw new ArgumentOutOfRangeException("Argumento fora de alcance.");
            }

            else if (posicao == 0)
            {
                adicionaInicio(elemento);
            }

            else if (posicao == this.Tamanho)
            {
                adicionaFim(elemento);
            }

            else
            {
                Celula       atual     = this.primeiro;
                Celula       aux       = this.pegaCelula(posicao - 2);
                Celula       newCelula = new Celula(elemento);
                Iterador <T> it        = new Iterador <T>(atual);
                while (it.hasNext())
                {
                    for (int i = 0; i <= posicao; i++)
                    {
                        atual = atual.Proxima;
                        if (i == posicao)
                        {
                            if (atual != null)
                            {
                                newCelula.Proxima = aux.Proxima;
                                aux.Proxima       = newCelula;
                            }
                        }
                    }
                    break;
                    it.next();
                }
                this.Tamanho++;
            }
        }
        public void remove(int posicao)
        {
            if (this.Tamanho == 0 || posicao < 0 || posicao > this.Tamanho)
            {
                throw new ArgumentOutOfRangeException("Argumento fora de alcance.");
            }

            else if (this.noCabeca.Proxima == this.noCabeca.Anterior)
            {
                this.noCabeca.Proxima  = null;
                this.noCabeca.Anterior = null;
                this.Tamanho--;
            }

            else if (posicao == 0)
            {
                this.removeInicio();
            }

            else
            {
                Celula       atual = this.noCabeca.Proxima;
                Iterador <T> it    = new Iterador <T>(atual);
                while (it.hasNext())
                {
                    for (int i = 0; i != posicao - 1; i++)
                    {
                        atual = atual.Proxima;
                    }
                    if (atual != null)
                    {
                        atual.Anterior = atual.Proxima;
                        atual.Proxima  = atual.Anterior.Proxima;
                        atual          = atual.Anterior.Proxima;
                    }
                    break;
                    it.next();
                }
                this.Tamanho--;
            }
        }
Exemple #7
0
        public void remove(int posicao)
        {
            if (this.Tamanho == 0 || posicao < 0 || posicao >= this.Tamanho)
            {
                throw new ArgumentOutOfRangeException("Argumento fora de alcance.");
            }

            else if (this.primeiro == this.ultimo)
            {
                this.primeiro = null;
                this.ultimo   = null;
                this.Tamanho--;
            }

            else
            {
                Celula       atual = this.primeiro;
                Celula       aux   = this.pegaCelula(posicao - 2);
                Celula       aux2  = this.pegaCelula(posicao);
                Iterador <T> it    = new Iterador <T>(atual);
                while (it.hasNext())
                {
                    for (int i = 0; i <= posicao; i++)
                    {
                        atual = atual.Proxima;
                        if (i == posicao)
                        {
                            if (atual != null)
                            {
                                atual         = aux;
                                atual.Proxima = aux2;
                            }
                        }
                    }
                    break;
                    it.next();
                }
                this.Tamanho--;
            }
        }