예제 #1
0
        public void Retirar(X obj)
        {
            if (EstaVazia())
            {
                throw new Exception("A fila está vazia. Não há nada para ser retirado.");
            }

            List <X> aux = new List <X>();

            int max = lista.GetQtd();

            for (int i = 0; i < max; i++)
            {
                if (lista.GetPos(i).Equals(obj))
                {
                    for (int i2 = i + 1; i2 < lista.GetQtd(); i2++)
                    {
                        aux.Add(lista.GetPos(i2));
                    }

                    var lista2 = new Lista <X>();

                    for (int i3 = 0; i3 < aux.Count; i3++)
                    {
                        lista2.InsiraNoFim(aux[i3]);
                    }

                    for (int i4 = 0; i4 < lista.GetQtd(); i4++)
                    {
                        lista.RemovaDoInicio();
                    }

                    lista = lista2;

                    return;
                }

                aux.Add(lista.GetPos(i));
            }
        }
예제 #2
0
        public Lista <X> Inversao()
        {
            Lista <X> ret = new Lista <X>();

            for (No atual = this.primeiro; atual != null; atual = atual.GetProx())
            {
                ret.primeiro = new No(null, atual.GetInfo(), ret.primeiro);

                if (ret.primeiro.GetProx() != null)
                {
                    ret.primeiro.GetProx().SetAnte(ret.primeiro);
                }

                ret.primeiro.SetAnte(null);

                if (ret.ultimo == null)
                {
                    ret.ultimo = ret.primeiro;
                }
            }

            return(ret);
        }
예제 #3
0
 public Fila()
 {
     lista = new Lista <X>();
 }