public void eliminar(String entrada) { NodoListaC actual; actual = lc; while ((actual.enlace != lc) && !actual.enlace.dato.Equals(entrada)) { if (!actual.enlace.dato.Equals(entrada)) { actual = actual.enlace; } } // Enlace de nodo anterior con el siguiente // si se ha encontrado el nodo. if (actual.enlace.dato.Equals(entrada)) { NodoListaC p; p = actual.enlace; // Nodo a eliminar if (lc == lc.enlace) // Lista con un solo nodo { lc = null; } else { if (p == lc) { lc = actual; // Se borra el elemento referenciado por lc, // el nuevo acceso a la lista es el anterior } actual.enlace = p.enlace; } p = null; } }
public ListaCircular insertar(String entrada) { nuevo = new NodoListaC(entrada); if (lc != null) // lista circular no vacía { nuevo.enlace = lc.enlace; lc.enlace = nuevo; } lc = nuevo; return(this); }
public void insertarArreglado(String name) { nuevo = new NodoListaC(name); if (lc == null) { lc = nuevo; lc.enlace = lc; ultimo = lc; } else { ultimo.enlace = nuevo; nuevo.enlace = lc; ultimo = nuevo; } }
public void borrarLista() { NodoListaC p; if (lc != null) { p = lc; do { NodoListaC t; t = p; p = p.enlace; t = null; // no es estrictamente necesario } while (p != lc); } else { Console.WriteLine("\n\t Lista vacía."); } lc = null; }
public NodoListaC(String entrada) { dato = entrada; enlace = this; // se apunta asímismo }
public ListaCircular() { lc = null; nuevo = null; ultimo = null; }