コード例 #1
0
        private Celula <T> PegaCelula(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);
        }
コード例 #2
0
        public bool Contem(T item)
        {
            Celula <T> atual = this.Primeira;

            while (atual != null)
            {
                if (atual.Elemento.Equals(item))
                {
                    return(true);
                }
                atual = atual.Proxima;
            }
            return(false);
        }
コード例 #3
0
        public void RemoveDoComeco()
        {
            if (!this.PosicaoOcupada(0))
            {
                throw new ArgumentException("Posição não existe");
            }

            this.Primeira = this.Primeira.Proxima;
            this.TotalDeElementos--;

            if (this.TotalDeElementos == 0)
            {
                this.Ultima = null;
            }
        }
コード例 #4
0
 public void Adiciona(T elemento)
 {
     if (this.TotalDeElementos == 0)
     {
         AdicionaNoComeco(elemento);
     }
     else
     {
         Celula <T> novaCelula = new Celula <T>(elemento);
         this.Ultima.Proxima = novaCelula;
         novaCelula.Anterior = this.Ultima;
         this.Ultima         = novaCelula;
         this.TotalDeElementos++;
     }
 }
コード例 #5
0
        public void AdicionaNoComeco(T elemento)
        {
            if (this.TotalDeElementos == 0)
            {
                Celula <T> novaCelula = new Celula <T>(elemento);
                this.Primeira = novaCelula;
                this.Ultima   = novaCelula;
            }
            else
            {
                Celula <T> novaCelula = new Celula <T>(Primeira, elemento);
                this.Primeira.Anterior = novaCelula;
                this.Primeira          = novaCelula;
            }

            this.TotalDeElementos++;
        }
コード例 #6
0
        public void RemoveDoFim()
        {
            if (!this.PosicaoOcupada(this.TotalDeElementos - 1))
            {
                throw new ArgumentException("Posição não existe");
            }

            if (this.TotalDeElementos == 1)
            {
                this.RemoveDoComeco();
            }

            else
            {
                Celula <T> penultima = this.Ultima.Anterior;
                penultima.Proxima = null;
                this.Ultima       = penultima;
                this.TotalDeElementos--;
            }
        }
コード例 #7
0
 public void Adiciona(int posicao, T elemento)
 {
     if (posicao == 0)
     {
         this.AdicionaNoComeco(elemento);
     }
     else if (posicao == this.TotalDeElementos)
     {
         this.Adiciona(elemento);
     }
     else
     {
         Celula <T> anterior = PegaCelula(posicao - 1);
         Celula <T> proxima  = anterior.Proxima;
         Celula <T> nova     = new Celula <T>(anterior.Proxima, elemento);
         nova.Anterior    = anterior;
         anterior.Proxima = nova;
         proxima.Anterior = nova;
         this.TotalDeElementos++;
     }
 }
コード例 #8
0
        public string Imprime()
        {
            if (this.TotalDeElementos == 0)
            {
                return("[]");
            }

            StringBuilder builder = new StringBuilder("[");
            Celula <T>    atual   = Primeira;

            for (int i = 0; i < this.TotalDeElementos - 1; i++)
            {
                builder.Append(atual.Elemento);
                builder.Append(", ");
                atual = atual.Proxima;
            }

            builder.Append(atual.Elemento);
            builder.Append("]");
            return(builder.ToString());
        }