//Esta función realiza la elminación fisica del nodo, recibe por parametros el index extraido por la //Función obtenerIndice public void eliminarNodo(int index) { if (index < 0) { Console.WriteLine("La versión no existe"); } else { //Se compara si el nodo es la cabeza, y se quita el enlace para pasarlo al dato siguiente de la lista if (index == 0) { primero = primero.siguiente; Console.WriteLine("Registro eliminado con éxito"); } else { //si el nodo no es la cabeza, se realiza una interación del index recibido y la lista, con el fin //de llegar a un nodo anterior al index recibido int contador = 0; NodoVersiones <T> temporal = primero; while (contador < index - 1) { temporal = temporal.siguiente; contador++; } //luego de asignar a temporal el nodo anterior al index recibido, se realiza el enlace //al nodo siguiente del siguiente, ingnorando de esta forma el nodo que esta en la posición del index recibido temporal.siguiente = temporal.siguiente.siguiente; Console.WriteLine("Registro eliminado con éxito"); } } }
//Método encargado de crear Nodos en la cabeza de la Lista public void agregarVersion(T version) { NodoVersiones <T> nuevaVersion = new NodoVersiones <T>(version); nuevaVersion.siguiente = primero; primero = nuevaVersion; }
//Método encargado de crear Nodos en la cabeza de la Lista public void agregarVersion(T Nodo, string categoria) { if (categoria.Equals("branch")) { int i = 0; nuevaRama = new NodoRamas <T>(Nodo); nuevaRama.siguiente = primeroRama; primeroRama = nuevaRama; nuevaRama.enlace = null; i++; } else { NodoVersiones <T> nuevaVersion = new NodoVersiones <T>(Nodo); nuevaVersion.siguiente = primero; primero = nuevaVersion; nuevaRama.enlace = (NodoRamas <T>)nuevaVersion; } }
public NodoVersiones() { this.dato = default; this.siguiente = null; }
public NodoVersiones(T dato) { this.dato = dato; this.siguiente = null; }
public NodoRamas(NodoVersiones <T> Version) { this.Version = Version; }
public Nodos() { primero = null; actual = null; anterior = null; }