//***************************************************** crear matriz*********************************** public void mostrarmatriz() { StreamWriter grafo = new StreamWriter("C:\\Users\\Admin\\Documents\\Visual Studio 2015\\Projects\\servidorproyecto\\grafo.txt"); grafo.WriteLine("digraph G{"); grafo.WriteLine("node[shape=box, style=filled, color=Gray95];"); grafo.WriteLine("edge[color=black];"); grafo.WriteLine("rankdir=UD;"); grafo.WriteLine("{rank=min;\"Matriz\";"); //------------------------------------- nodoencabezadomatriz eColumna = Primero; while (eColumna != null) { grafo.WriteLine("\"x" + eColumna.Id + "\";"); eColumna = eColumna.Siguiente; } grafo.WriteLine("};\n"); //-------------------------------------- grafo.WriteLine("\n"); //-------------------------------------- nodoencabezadomatriz eFila = Primerofila; while (eFila != null) { grafo.WriteLine("{rank=same;" + "\"" + "y" + eFila.Id + "\";"); nodomatriz actual = eFila.Acceso; while (actual != null) { grafo.WriteLine("\"" + actual.Valor + ":" + actual.Posy + "," + actual.Posx + "\";"); actual = actual.Siguiente; } grafo.WriteLine("};\n"); eFila = eFila.Siguiente; } //---------------------------------------- grafo.WriteLine("\n"); //---------------------------------------- toca aqui creo yo nodoencabezadomatriz eFila2 = Primerofila; //cout << "Recorrido Por Filas: "; while (eFila2 != null) { //grafo<<"{rank=same;"<<"\""<<eFila->id<<"\";"; nodomatriz actual = eFila2.Acceso; while (actual != null) { if (actual.Abajo == null) { } else { grafo.WriteLine("\"" + actual.Valor + ":" + actual.Posy + "," + actual.Posx + "\"" + "->" + "\"" + actual.Abajo.Valor + ":" + actual.Abajo.Posy + "," + actual.Abajo.Posx + "\";"); } if (actual.Arriba == null) { } else { grafo.WriteLine("\"" + actual.Valor + ":" + actual.Posy + "," + actual.Posx + "\"" + "->" + "\"" + actual.Arriba.Valor + ":" + actual.Arriba.Posy + "," + actual.Arriba.Posx + "\";"); } actual = actual.Siguiente; } // grafo<<"};\n"; eFila2 = eFila2.Siguiente; } //--------------------------------------- grafo.WriteLine("\n"); //--------------------------------------- nodoencabezadomatriz eColumna2 = Primero; while (eColumna2 != null) { grafo.WriteLine("\"" + "x" + eColumna2.Id + "\"->\"" + eColumna2.Acceso.Valor + ":" + eColumna2.Acceso.Posy + "," + eColumna2.Acceso.Posx + "\";"); eColumna2 = eColumna2.Siguiente; } //------------------------------------------ grafo.WriteLine("\n"); //----------------------------------------- nodoencabezadomatriz eFila3 = Primerofila; //cout << "Recorrido Por Filas: "; while (eFila3 != null) { //grafo<<"{rank=same;"<<"\""<<eFila->id<<"\";"; nodomatriz actual = eFila3.Acceso; while (actual != null) { if (actual.Siguiente == null) { } else { grafo.WriteLine("\"" + actual.Valor + ":" + actual.Posy + "," + actual.Posx + "\"" + "->" + "\"" + actual.Siguiente.Valor + ":" + actual.Siguiente.Posy + "," + actual.Siguiente.Posx + "\"" + "[constraint=false];"); } if (actual.Anterior == null) { } else { grafo.WriteLine("\"" + actual.Valor + ":" + actual.Posy + "," + actual.Posx + "\"" + "->" + "\"" + actual.Anterior.Valor + ":" + actual.Anterior.Posy + "," + actual.Anterior.Posx + "\"" + "[constraint=false];"); } actual = actual.Siguiente; //aqui iba derecha } eFila3 = eFila3.Siguiente; } //------------------------------------------------------------------ grafo.WriteLine("\n"); //----------------------------------------------------------------- nodoencabezadomatriz eFila4 = Primerofila; while (eFila4 != null) { grafo.WriteLine("\"" + "y" + eFila4.Id + "\"->\"" + eFila4.Acceso.Valor + ":" + eFila4.Acceso.Posy + "," + eFila4.Acceso.Posx + "\";"); eFila4 = eFila4.Siguiente; } //------------------------------------------------------------------ grafo.WriteLine("\n"); //------------------------------------------------------------------- nodoencabezadomatriz eColumna3 = Primero; grafo.WriteLine("Matriz -> " + "\"" + "x" + eColumna3.Id + "\";"); while (eColumna3 != null) { if (eColumna3.Siguiente == null) { } else { grafo.WriteLine("\"" + "x" + eColumna3.Id + "\"->\"" + "x" + eColumna3.Siguiente.Id + "\";"); } eColumna3 = eColumna3.Siguiente; } //-------------------------------------------------------------------- grafo.WriteLine("\n"); //-------------------------------------------------------------------- nodoencabezadomatriz eFila5 = Primerofila; grafo.WriteLine("Matriz -> " + "\"" + "y" + eFila5.Id + "\"[rankdir=UD];"); while (eFila5 != null) { if (eFila5.Siguiente == null) { } else { grafo.WriteLine("\"" + "y" + eFila5.Id + "\"->\"" + "y" + eFila5.Siguiente.Id + "\"[rankdir=UD];"); } eFila5 = eFila5.Siguiente; } //-------------------------------------------------------------------- grafo.WriteLine("}"); grafo.Close(); }
} //*****************************fin del metodo insertar columna public void insertarmatriznivelcero(int fila, int columna, int id1, int nivel) { nodomatriz nuevo1 = new nodomatriz(fila, columna, id1, nivel); nodoencabezadomatriz filaa = getEncabezadofila(fila); if (filaa == null)//si no exisste el encabezado entonces se crea { filaa = new nodoencabezadomatriz(fila); insertarencabezadofila(filaa); filaa.Acceso = nuevo1; } else { int auxnivel = filaa.Acceso.Nivel; if (auxnivel == 1) { if (nuevo1.Posx < filaa.Acceso.Posx)//insercion al inicio { nuevo1.Siguiente = filaa.Acceso; filaa.Acceso.Anterior = nuevo1; filaa.Acceso = nuevo1; } else { nodomatriz actual = filaa.Acceso; while (actual.Siguiente != null) { if (nuevo1.Posx < actual.Siguiente.Posx) { nuevo1.Siguiente = actual.Siguiente; actual.Siguiente.Anterior = nuevo1; nuevo1.Anterior = actual;//anterior actual.Siguiente = nuevo1; break; } actual = actual.Siguiente; } if (actual.Siguiente == null) //Inserción al final { actual.Siguiente = nuevo1; nuevo1.Anterior = actual; } } } else if (auxnivel == 2) { } else if (auxnivel == 3) { } }//fin de filas //insercion columna nodoencabezadomatriz columnaa = getEncabezado(columna); if (columnaa == null) //Si no existe encabezado se crea. { columnaa = new nodoencabezadomatriz(columna); insertarencabezado(columnaa); columnaa.Acceso = nuevo1; } else { if (nuevo1.Posy < columnaa.Acceso.Posy) //Inserción al inicio { nuevo1.Abajo = columnaa.Acceso; columnaa.Acceso.Arriba = nuevo1; columnaa.Acceso = nuevo1; } else { nodomatriz actuaal = columnaa.Acceso; while (actuaal.Abajo != null) { if (nuevo1.Posy < actuaal.Abajo.Posy) //Inserción en el medio { nuevo1.Abajo = actuaal.Abajo; actuaal.Abajo.Arriba = nuevo1; nuevo1.Arriba = actuaal; actuaal.Abajo = nuevo1; break; } actuaal = actuaal.Abajo; } if (actuaal.Abajo == null) //Inserción al final { actuaal.Abajo = nuevo1; nuevo1.Arriba = actuaal; } } } }