protected override bool ModificarEn(int prmIndice, Tipo prmItem) { if (EstaVacia()) { if (prmIndice == 0) { atrNodoPrimero.ponerItem(prmItem); return(true); } if (prmIndice == atrLongitud - 1) { atrNodoUltimo.ponerItem(prmItem); return(true); } if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoActual = atrNodoPrimero; for (int VarIndice = 1; VarIndice <= prmIndice; VarIndice++) { varNodoActual = varNodoActual.darSiguiente(); } varNodoActual.ponerItem(prmItem); return(true); } } return(false); }
protected override bool Avanzar() { atrIndiceActual++; atrNodoActual = atrNodoActual.darSiguiente(); atrItemActual = atrNodoActual.darItem(); return(true); }
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 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 (!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 InsertarEn(int prmIndice, Tipo prmItem) { clsNodoDobleEnlazado <Tipo> varNodoNuevo = new clsNodoDobleEnlazado <Tipo>(prmItem); #region Insertar el primer elemento if (EstaVacia()) { atrNodoPrimero = varNodoNuevo; atrNodoUltimo = atrNodoPrimero; atrNodoUltimo.ponerAnterior(atrNodoPrimero); atrNodoPrimero.ponerSiguiente(atrNodoUltimo); atrLongitud++; return(true); } #endregion #region Insertar en la primera posicion if (prmIndice == 0) { varNodoNuevo.ponerSiguiente(atrNodoPrimero); atrNodoPrimero.ponerAnterior(varNodoNuevo); atrNodoPrimero = varNodoNuevo; atrLongitud++; return(true); } #endregion #region Insertar en la ultima posicion if (prmIndice == atrLongitud) { atrNodoUltimo.ponerSiguiente(varNodoNuevo); varNodoNuevo.ponerAnterior(atrNodoUltimo); atrNodoUltimo = varNodoNuevo; atrLongitud++; return(true); } #endregion #region Insertar en cualquier posicion if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoActual = atrNodoPrimero; for (int varIndice = 1; varIndice < prmIndice - 1; varIndice++) { varNodoActual = varNodoActual.darSiguiente(); } varNodoNuevo.ponerSiguiente(varNodoActual.darSiguiente()); varNodoNuevo.ponerAnterior(varNodoActual); varNodoActual.ponerSiguiente(varNodoNuevo); atrLongitud++; return(true); } #endregion return(false); }
protected override bool InsertarEn(int prmIndice, Tipo prmItem) { clsNodoDobleEnlazado <Tipo> varNodoNuevo = new clsNodoDobleEnlazado <Tipo>(prmItem); if (EstaVacia()) { atrNodoPrimero = varNodoNuevo; atrNodoUltimo = varNodoNuevo; atrNodoPrimero.ponerSiguiente(atrNodoUltimo); atrNodoUltimo.ponerAnterior(atrNodoPrimero); atrLongitud++; return(true); } if (prmIndice == 0) { varNodoNuevo.ponerSiguiente(atrNodoPrimero); atrNodoPrimero.ponerAnterior(varNodoNuevo); atrNodoPrimero = varNodoNuevo; atrLongitud++; return(true); } if (prmIndice == atrLongitud) { //atrNodoUltimo.ponerSiguiente(varNodoNuevo); //varNodoNuevo.ponerAnterior(atrNodoUltimo); atrNodoUltimo.ConectarSiguiente(varNodoNuevo); atrNodoUltimo = varNodoNuevo; atrLongitud++; return(true); } if (IrIndice(prmIndice - 1)) { //varNodoNuevo.ponerSiguiente(atrNodoActual); //varNodoNuevo.ponerAnterior(atrNodoActual.darAnterior()); //atrNodoActual.darAnterior().ponerSiguiente(varNodoNuevo); //atrNodoActual.ponerAnterior(varNodoNuevo); atrNodoActual.ConectarSiguiente(varNodoNuevo); atrLongitud++; 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 ExtraerEn(int prmIndice, ref Tipo prmItem) { clsNodoDobleEnlazado <Tipo> varNodoNuevo; if (IrIndice(prmIndice)) { prmItem = atrItemActual; if (atrLongitud - 1 == 0) { atrNodoPrimero = null; atrNodoUltimo = null; atrLongitud--; return(true); } if (prmIndice == 0) { varNodoNuevo = this.atrNodoActual.darSiguiente(); varNodoNuevo.ponerAnterior(null); this.atrNodoActual = varNodoNuevo; atrNodoPrimero = varNodoNuevo; atrLongitud--; return(true); } if (prmIndice == atrLongitud - 1) { varNodoNuevo = atrNodoActual.darAnterior(); atrNodoUltimo = varNodoNuevo; atrNodoActual = varNodoNuevo; atrLongitud--; return(true); } varNodoNuevo = atrNodoActual.darSiguiente(); atrNodoActual.ponerSiguiente(varNodoNuevo); varNodoNuevo.darSiguiente().ponerAnterior(atrNodoActual); varNodoNuevo.ponerSiguiente(null); varNodoNuevo.ponerAnterior(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); }
protected override bool InsertarEn(int prmIndice, Tipo prmItem) { clsNodoDobleEnlazado <Tipo> varNodoNuevo = new clsNodoDobleEnlazado <Tipo>(prmItem); if (EstaVacia()) { atrNodoPrimero = varNodoNuevo; atrNodoUltimo = varNodoNuevo; atrNodoPrimero.ponerSiguiente(atrNodoUltimo); atrNodoUltimo.ponerAnterior(atrNodoPrimero); atrLongitud++; return(true); } if (prmIndice == 0) { varNodoNuevo.ponerSiguiente(atrNodoPrimero); atrNodoPrimero.ponerAnterior(varNodoNuevo); atrNodoPrimero = varNodoNuevo; atrLongitud++; return(true); } if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoActual = atrNodoPrimero; for (int varIndice = 1; varIndice < prmIndice; varIndice++) { varNodoActual = varNodoActual.darSiguiente(); } varNodoNuevo.ponerSiguiente(varNodoActual); varNodoNuevo.ponerAnterior(varNodoActual.darSiguiente()); varNodoActual.darAnterior().ponerSiguiente(varNodoNuevo); varNodoActual.ponerAnterior(varNodoNuevo); atrLongitud++; return(true); } return(false); }
protected override bool ModificarEn(int prmIndice, Tipo prmItem) { if (!EstaVacia()) { #region modificar en 0 if (prmIndice == 0) { atrNodoPrimero.ponerItem(prmItem); if (atrLongitud == 1) { atrNodoUltimo = atrNodoPrimero; } return(true); } #endregion #region modificar en longitud if (prmIndice == atrLongitud - 1) { atrNodoUltimo.ponerItem(prmItem); return(true); } #endregion #region modificar en n posicion if (EsValido(prmIndice)) { clsNodoDobleEnlazado <Tipo> varNodoModificado = atrNodoPrimero; for (int varIndice = 1; varIndice <= prmIndice; varIndice++) { varNodoModificado = varNodoModificado.darSiguiente(); } varNodoModificado.ponerItem(prmItem); return(true); } #endregion } return(false); }