protected override bool ExtraerEn(int prmIndice, ref Tipo prmItem) { if (!EstaVacia()) { #region extraer en 0 if (prmIndice == 0) { prmItem = atrNodoPrimero.darItem(); if (atrLongitud == 1) { atrNodoPrimero = null; atrNodoUltimo = null; atrLongitud--; return(true); } atrNodoPrimero = atrNodoPrimero.darSiguiente(); atrNodoPrimero.ponerAnterior(null); atrLongitud--; return(true); } #endregion #region Extraer en longitud if (prmIndice == atrLongitud - 1) { prmItem = atrNodoUltimo.darItem(); atrNodoUltimo = atrNodoUltimo.darAnterior(); atrNodoUltimo.ponerSiguiente(null); atrLongitud--; return(true); } #endregion #region extraer en n posicion if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoExtraido = atrNodoPrimero; for (int varIndice = 1; varIndice < prmIndice; varIndice++) { varNodoExtraido = varNodoExtraido.darSiguiente(); } prmItem = varNodoExtraido.darItem(); varNodoExtraido.darSiguiente().ponerAnterior(varNodoExtraido.darAnterior()); varNodoExtraido.darAnterior().ponerSiguiente(varNodoExtraido.darSiguiente()); varNodoExtraido.ponerSiguiente(null); varNodoExtraido.ponerAnterior(null); atrLongitud--; GC.Collect(); return(true); } #endregion } return(false); }
protected override bool RecuperarEn(int prmIndice, ref Tipo prmItem) { if (EstaVacia()) { if (prmIndice == 0) { prmItem = atrNodoPrimero.darItem(); return(true); } if (prmIndice == atrLongitud - 1) { prmItem = atrNodoUltimo.darItem(); return(true); } if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoActual = atrNodoPrimero; for (int VarIndice = 1; VarIndice <= prmIndice; VarIndice++) { varNodoActual = varNodoActual.darSiguiente(); } prmItem = varNodoActual.darItem(); return(true); } } return(false); }
protected override bool RecuperarEn(int prmIndice, ref Tipo prmItem) { if (!EstaVacia()) { #region recuperar en 0 if (prmIndice == 0) { prmItem = atrNodoPrimero.darItem(); return(true); } #endregion #region recuperar en longitud if (prmIndice == atrLongitud - 1) { prmItem = atrNodoUltimo.darItem(); return(true); } #endregion #region recuperar en n posicion if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoRecuperado = atrNodoPrimero; for (int varIndice = 1; varIndice <= prmIndice; varIndice++) { varNodoRecuperado = varNodoRecuperado.darSiguiente(); } prmItem = varNodoRecuperado.darItem(); return(true); } #endregion } return(false); }
protected override bool Avanzar() { atrIndiceActual++; atrNodoActual = atrNodoActual.darSiguiente(); atrItemActual = atrNodoActual.darItem(); return(true); }
protected override bool Retroceder() { atrIndiceActual--; atrNodoActual = atrNodoActual.darAnterior(); atrItemActual = atrNodoActual.darItem(); return(true); }
protected override bool IrUltimo() { if (!EstaVacia()) { atrIndiceActual = atrLongitud - 1; atrNodoActual = atrNodoUltimo; atrItemActual = atrNodoActual.darItem(); return(true); } return(false); }
protected override bool IrPrimero() { if (!EstaVacia()) { atrIndiceActual = 0; atrNodoActual = atrNodoPrimero; atrItemActual = atrNodoActual.darItem(); return(true); } return(false); }
protected override bool ExtraerEn(int prmIndice, ref Tipo prmItem) { if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoExtraido = atrNodoPrimero; for (int varIndice = 1; varIndice <= prmIndice; varIndice++) { varNodoExtraido = varNodoExtraido.darSiguiente(); } prmItem = varNodoExtraido.darItem(); varNodoExtraido.darAnterior().ponerSiguiente(varNodoExtraido.darSiguiente()); varNodoExtraido.darSiguiente().ponerAnterior(varNodoExtraido.darAnterior()); varNodoExtraido.ponerAnterior(null); varNodoExtraido.ponerSiguiente(null); varNodoExtraido = null; atrLongitud--; return(true); } return(false); }
protected override bool IntercambiarEntre(int prmIndice1, int prmIndice2) { if (EsValido(prmIndice1) && EsValido(prmIndice2)) { if (prmIndice1 != prmIndice2) { IrIndice(prmIndice1); clsNodoDobleEnlazado <Tipo> varNodoIndice1 = atrNodoActual; IrIndice(prmIndice2); clsNodoDobleEnlazado <Tipo> varNodoIndice2 = atrNodoActual; if (varNodoIndice1 != null && varNodoIndice2 != null) { Tipo varItemIndice1 = varNodoIndice1.darItem(); varNodoIndice1.ponerItem(varNodoIndice2.darItem()); varNodoIndice2.ponerItem(varItemIndice1); return(true); } } } return(false); }