コード例 #1
0
        public void InvertaSe()
        {
            if (this.primeiro == null)
            {
                return;
            }

            if (this.primeiro.GetProx() == null)
            {
                return;
            }

            No backup, atual = this.primeiro;

            while (atual != null)
            {
                backup = atual.GetProx();
                atual.SetProx(atual.GetAnte());
                atual.SetAnte(backup);
                atual = backup;
            }

            backup        = this.primeiro;
            this.primeiro = this.ultimo;
            this.ultimo   = backup;
        }
コード例 #2
0
        public void Remova(X i)
        {
            if (i == null)
            {
                throw new Exception("Informacao ausente");
            }

            if (this.primeiro == null)
            {
                throw new Exception("Lista vazia");
            }

            if (i.Equals(this.primeiro.GetInfo()))
            {
                this.primeiro = this.primeiro.GetProx();

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

                return;
            }

            No atual = this.primeiro;

            for (;;)
            {
                if (atual == null)
                {
                    throw new Exception("Informacao inexistente");
                }

                if (i.Equals(atual.GetInfo()))
                {
                    if (atual == this.primeiro)
                    {
                        this.primeiro = this.primeiro.GetProx();

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

                        return;
                    }

                    if (atual == this.ultimo)
                    {
                        this.ultimo = this.ultimo.GetAnte();

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

                        return;
                    }

                    atual.GetAnte().SetProx(atual.GetProx());
                    atual.GetProx().SetAnte(atual.GetAnte());
                    return;
                }

                atual = atual.GetProx();
            }
        }