Exemplo n.º 1
0
        protected override bool InsertarEn(int prmIndice, Tipo prmItem)
        {
            clsNodoSimpleEnlazado <Tipo> varNodoNuevo = new clsNodoSimpleEnlazado <Tipo>(prmItem);

            if (EstaVacia())
            {
                atrNodoPrimero = varNodoNuevo;
                atrNodoUltimo  = varNodoNuevo;
                atrNodoPrimero.ponerSiguiente(atrNodoUltimo);
                atrLongitud++;
                return(true);
            }
            if (prmIndice == 0)
            {
                varNodoNuevo.ponerSiguiente(atrNodoPrimero);
                atrNodoPrimero = varNodoNuevo;
                atrLongitud++;
                return(true);
            }
            if (prmIndice == atrLongitud)
            {
                atrNodoUltimo.ponerSiguiente(varNodoNuevo);
                atrNodoUltimo = varNodoNuevo;
                atrLongitud++;
                return(true);
            }
            if (IrIndice(prmIndice - 1))
            {
                atrNodoActual.ponerSiguiente(varNodoNuevo);
                atrLongitud++;
                return(true);
            }
            return(false);
        }
Exemplo n.º 2
0
 protected override bool Avanzar()
 {
     atrIndiceActual++;
     atrNodoActual = atrNodoActual.darSiguiente();
     atrItemActual = atrNodoActual.darItem();
     return(true);
 }
Exemplo n.º 3
0
 protected override bool IrUltimo()
 {
     if (!EstaVacia())
     {
         atrIndiceActual = atrLongitud - 1;
         atrNodoActual   = atrNodoUltimo;
         atrItemActual   = atrNodoActual.darItem();
         return(true);
     }
     return(false);
 }
Exemplo n.º 4
0
 protected override bool IrPrimero()
 {
     if (!EstaVacia())
     {
         atrIndiceActual = 0;
         atrNodoActual   = atrNodoPrimero;
         atrItemActual   = atrNodoActual.darItem();
         return(true);
     }
     return(false);
 }
 protected override bool RecuperarEn(int prmIndice, ref Tipo prmItem)
 {
     if (EsValido(prmIndice))
     {
         clsNodoSimpleEnlazado <Tipo> varNodoActual = atrNodoPrimero;
         for (int varIndice = 0; varIndice < prmIndice; varIndice++)
         {
             varNodoActual = varNodoActual.darSiguiente();
         }
         prmItem = varNodoActual.darItem();
         return(true);
     }
     return(false);
 }
 protected override bool ModificarEn(int prmIndice, Tipo prmItem)
 {
     if (EsValido(prmIndice))
     {
         clsNodoSimpleEnlazado <Tipo> varNodoActual = atrNodoPrimero;
         for (int varIndice = 1; varIndice < prmIndice; varIndice++)
         {
             varNodoActual = varNodoActual.darSiguiente();
         }
         varNodoActual.ponerItem(prmItem);
         return(true);
     }
     return(false);
 }
        protected override bool InsertarEn(int prmIndice, Tipo prmItem)
        {
            clsNodoSimpleEnlazado <Tipo> varNodoNuevo = new clsNodoSimpleEnlazado <Tipo>(prmItem);

            #region Insertar el primer elemento
            if (EstaVacia())
            {
                atrNodoPrimero = varNodoNuevo;
                atrNodoPrimero.ponerSiguiente(atrNodoUltimo);
                atrNodoUltimo = varNodoNuevo;
                atrLongitud++;
                return(true);
            }
            #endregion
            #region Insertar al inicio de la coleccion
            if (prmIndice == 0)
            {
                varNodoNuevo.ponerSiguiente(atrNodoPrimero);
                atrNodoPrimero = varNodoNuevo;
                atrLongitud++;
                return(true);
            }
            #endregion
            #region Insertar al final de la coleccion
            if (prmIndice == atrLongitud)
            {
                atrNodoUltimo.ponerSiguiente(varNodoNuevo);
                atrNodoUltimo = varNodoNuevo;
                atrLongitud++;
                return(true);
            }
            #endregion
            #region Insertar en cualquier posicion
            if (EsValido(prmIndice))
            {
                clsNodoSimpleEnlazado <Tipo> varNodoActual = atrNodoPrimero;
                for (int varIndice = 1; varIndice < prmIndice - 1; varIndice++)
                {
                    varNodoActual = varNodoActual.darSiguiente();
                }
                varNodoNuevo.ponerSiguiente(varNodoActual.darSiguiente());
                varNodoActual.ponerSiguiente(varNodoNuevo);
                atrLongitud++;
                return(true);
            }
            #endregion
            return(false);
        }
 protected override bool ExtraerEn(int prmIndice, ref Tipo prmItem)
 {
     if (!EstaVacia())
     {
         #region Entraer al inicio de la colección
         if (prmIndice == 0)
         {
             prmItem        = atrNodoPrimero.darItem();
             atrNodoPrimero = atrNodoPrimero.darSiguiente();
             atrLongitud--;
             return(true);
         }
         #endregion
         #region Extraer al final de la coleccion
         if (prmIndice == atrLongitud - 1)
         {
             clsNodoSimpleEnlazado <Tipo> varNodoExtraido = atrNodoPrimero;
             for (int varIndice = 1; varIndice < prmIndice; varIndice++)
             {
                 varNodoExtraido = varNodoExtraido.darSiguiente();
             }
             prmItem       = varNodoExtraido.darSiguiente().darItem();
             atrNodoUltimo = varNodoExtraido;
             varNodoExtraido.ponerSiguiente(null);
             atrLongitud--;
             return(true);
         }
         #endregion
         #region Extraer en cualquier posicion
         if (EsValido(prmIndice))
         {
             clsNodoSimpleEnlazado <Tipo> varNodoExtraido = atrNodoPrimero;
             for (int varIndice = 1; varIndice <= prmIndice; varIndice++)
             {
                 varNodoExtraido = varNodoExtraido.darSiguiente();
             }
             prmItem = varNodoExtraido.darItem();
             varNodoExtraido.ponerSiguiente(varNodoExtraido.darSiguiente());
             atrLongitud--;
             return(true);
         }
         #endregion
     }
     return(false);
 }
 protected override bool ExtraerEn(int prmIndice, ref Tipo prmItem)
 {
     if (EsValido(prmIndice))
     {
         clsNodoSimpleEnlazado <Tipo> varNodoActual = atrNodoPrimero;
         clsNodoSimpleEnlazado <Tipo> varNodoExtraido;
         for (int varIndice = 1; varIndice < prmIndice - 1; varIndice++)
         {
             varNodoActual = varNodoActual.darSiguiente();
         }
         varNodoExtraido = varNodoActual.darSiguiente();
         prmItem         = varNodoExtraido.darItem();
         varNodoActual.ponerSiguiente(varNodoExtraido.darSiguiente());
         varNodoExtraido.ponerSiguiente(null);
         varNodoExtraido = null;
         atrLongitud--;
         return(true);
     }
     return(false);
 }
Exemplo n.º 10
0
 protected override bool IntercambiarEntre(int prmIndice1, int prmIndice2)
 {
     if (EsValido(prmIndice1) && EsValido(prmIndice2))
     {
         if (prmIndice1 != prmIndice2)
         {
             IrIndice(prmIndice1);
             clsNodoSimpleEnlazado <Tipo> varNodoIndice1 = atrNodoActual;
             IrIndice(prmIndice2);
             clsNodoSimpleEnlazado <Tipo> varNodoIndice2 = atrNodoActual;
             if (varNodoIndice1 != null && varNodoIndice2 != null)
             {
                 Tipo varItemIndice1 = varNodoIndice1.darItem();
                 varNodoIndice1.ponerItem(varNodoIndice2.darItem());
                 varNodoIndice2.ponerItem(varItemIndice1);
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 11
0
        protected override bool ExtraerEn(int prmIndice, ref Tipo prmItem)
        {
            clsNodoSimpleEnlazado <Tipo> varNodoNuevo;

            if (!EstaVacia())
            {
                if (prmIndice == 0 && atrLongitud == 1)
                {
                    prmItem        = atrNodoPrimero.darItem();
                    atrNodoPrimero = null;
                    atrNodoUltimo  = null;
                    atrLongitud--;
                    return(true);
                }
                if (prmIndice == 0)
                {
                    prmItem        = atrNodoPrimero.darItem();
                    varNodoNuevo   = atrNodoPrimero.darSiguiente();
                    atrNodoPrimero = varNodoNuevo;
                    atrLongitud--;
                    return(true);
                }
                if (IrIndice(prmIndice - 1))
                {
                    if (atrNodoActual.DesconectarSiguiente(ref prmItem))
                    {
                        if (prmIndice == atrLongitud - 1)
                        {
                            atrNodoUltimo = atrNodoActual;
                        }
                        atrLongitud--;
                        return(true);
                    }
                    return(false);
                }
            }
            return(false);
        }