public bool existeHorizontal(string x, string y, Unidad unidad) { //Se crea la cabezera en y listaVertical.insertar(x); //Se crea el nuevo nodo NodoM nuevo = new NodoM(); nuevo.x = x; nuevo.y = y; nuevo.unidad = unidad; NodoM aux = listaHorizontal.buscar(y); aux = aux.abajo; bool agregado = false; while (aux != null) { if (esMayor(aux.x, x) < 0) { aux = aux.abajo; } else { nuevo.abajo = aux; nuevo.arriba = aux.arriba; aux.arriba.abajo = nuevo; aux.arriba = nuevo; agregado = true; tamaño++; break; } } if (!agregado) { aux = listaHorizontal.buscar(y); aux = aux.abajo; while (aux.abajo != null) { aux = aux.abajo; } nuevo.arriba = aux; aux.abajo = nuevo; tamaño++; } NodoM auxV = listaVertical.buscar(x); auxV.derecha = nuevo; nuevo.izquierda = auxV; tamaño++; return(true); }
public bool existeVertical(string x, string y, Unidad unidad) { listaHorizontal.insertar(y); NodoM nuevo = new NodoM(); nuevo.x = x; nuevo.y = y; nuevo.unidad = unidad; NodoM auxV = listaVertical.buscar(x); auxV = auxV.derecha; bool agregado = false; while (auxV != null) { if (esMayor2(auxV.y, y) < 0) { auxV = auxV.derecha; } else { nuevo.derecha = auxV; nuevo.izquierda = auxV.izquierda; auxV.izquierda.derecha = nuevo; auxV.izquierda = nuevo; tamaño++; agregado = true; break; } } if (!agregado) { auxV = listaVertical.buscar(x); auxV = auxV.derecha; while (auxV.derecha != null) { auxV = auxV.derecha; } nuevo.izquierda = auxV; auxV.derecha = nuevo; tamaño++; } NodoM aux = listaHorizontal.buscar(y); aux.abajo = nuevo; nuevo.arriba = aux; tamaño++; return(true); }
public bool insertar(string x, string y, string subtipo, string usuario) { if (!x.Equals("") && !y.Equals("") && !subtipo.Equals("")) { y = y.ToUpper(); subtipo = subtipo.ToLower(); Unidad unidad = new Unidad(subtipo, usuario); if (!unidad.subtipo.Equals("")) { return(insertar(x, y, unidad)); } } return(false); }
public bool insertar(string x, string y, Unidad unidad) { if (esVacia()) { listaVertical = new ListaDobleV(); listaHorizontal = new ListaDobleH(); NodoM nuevo = new NodoM(); nuevo.unidad = unidad; nuevo.x = x; nuevo.y = y; listaVertical.insertar(x); listaHorizontal.insertar(y); NodoM encabezadoVertical = listaVertical.buscar(x); NodoM encabezadoHorizontal = listaHorizontal.buscar(y); encabezadoVertical.derecha = nuevo; encabezadoHorizontal.abajo = nuevo; nuevo.arriba = encabezadoHorizontal; nuevo.izquierda = encabezadoVertical; tamaño++; return(true); } else { if (listaVertical.buscar(x) != null && listaHorizontal.buscar(y) != null) { return(existenAmbosEncabezados(x, y, unidad)); } else if (listaVertical.buscar(x) == null && listaHorizontal.buscar(y) != null) { return(existeHorizontal(x, y, unidad)); } else if (listaVertical.buscar(x) != null && listaHorizontal.buscar(y) == null) { return(existeVertical(x, y, unidad)); } else if (listaVertical.buscar(x) == null && listaHorizontal.buscar(y) == null) { return(noExisten(x, y, unidad)); } } return(false); }
public bool noExisten(string x, string y, Unidad unidad) { listaHorizontal.insertar(y); listaVertical.insertar(x); NodoM nuevo = new NodoM(); nuevo.x = x; nuevo.y = y; nuevo.unidad = unidad; NodoM aux = listaHorizontal.buscar(y); NodoM auxV = listaVertical.buscar(x); aux.abajo = nuevo; auxV.derecha = nuevo; nuevo.arriba = aux; nuevo.izquierda = auxV; tamaño++; tamaño++; return(true); }
public bool existenAmbosEncabezados(string x, string y, Unidad unidad) { //Se busca el nodo en la posición x,y NodoM nodo = obtenerNodo(x, y); //Si el nodo existe, se agrega el nuevo nodo con relación a este. if (nodo != null) { NodoM nuevo = new NodoM(); nuevo.x = x; nuevo.y = y; nuevo.unidad = unidad; return(agregarANodo(nodo, nuevo)); } //Si no existe un nodo en las coordenadas x,y else { //-----------------------PARA INSERTAR EN Y----------------------// //Se crea el nuevo nodo NodoM nuevo = new NodoM(); nuevo.x = x; nuevo.y = y; nuevo.unidad = unidad; //Se busca el encabezado en donde se va a insertar //y se recorre hacia abajo buscando la posicion en y a insertar NodoM aux = listaHorizontal.buscar(y); aux = aux.abajo; bool agregado = false; while (aux != null) { if (esMayor(aux.x, x) < 0) { aux = aux.abajo; } else { //Se inserta si se encuentra la posición correcta en y nuevo.abajo = aux; nuevo.arriba = aux.arriba; aux.arriba.abajo = nuevo; aux.arriba = nuevo; tamaño++; agregado = true; break; } } //Si no se agregó, se agrega hasta abajo del encabezado if (!agregado) { aux = listaHorizontal.buscar(y); aux = aux.abajo; while (aux.abajo != null) { aux = aux.abajo; } nuevo.arriba = aux; aux.abajo = nuevo; tamaño++; } //-----------------------PARA INSERTAR EN X----------------------// //Se recorre buscando la posición correcta en X NodoM auxV = listaVertical.buscar(x); auxV = auxV.derecha; agregado = false; while (auxV != null) { if (esMayor2(auxV.y, y) < 0) { auxV = auxV.derecha; } else { //Si se encuentra se inserta nuevo.derecha = auxV; nuevo.izquierda = auxV.izquierda; auxV.izquierda.derecha = nuevo; auxV.izquierda = nuevo; tamaño++; agregado = true; break; } } //Si no se insertó, se inserta al final del encabezado vertical if (!agregado) { auxV = listaVertical.buscar(x); auxV = auxV.derecha; while (auxV.derecha != null) { auxV = auxV.derecha; } auxV.derecha = nuevo; nuevo.izquierda = auxV; tamaño++; } return(true); } return(false); }