Recorrido de un Grafo (Código en Lenguaje C)

Les agradeceria muchisimo que mje ayudaran con este tema, muchas gracias

1 Respuesta

Respuesta
1
¿Te molestaría si te lo doy en java? Tengo un muy buen ejemplo, se que tu lo podrás adaptar al C, ya que es casi igualito, te voy a dar una estructura de datos que realize para ti.
Un grafo(árbol) esta compuesto por nodos, que tienen un valor y un indice, entonces la clase nodo seria así
package ArbolesEnearios;
public class NodoN {
private Object elemento;
private NodoN hijo,hermano;
public NodoN(Object elemento){setElemento(elemento);}
public void setElemento(Object elemento){this.elemento = elemento;}
public Object getElemento(){return elemento;}
public void setHijo(NodoN i){this.hijo = i;}
public NodoN getHijo(){return hijo;}
public void setHermano(NodoN d){this.hermano = d;}
public NodoN getHermano(){return hermano;}
public String toString(){return elemento+"";}
}
Y los metodos para llenar, y mostrar serian asi.
public static void main(String[] args) {
NodoN raiz;
lectura_escritura.escribe("Raiz:");
raiz = new NodoN(new Integer(lectura_escritura.leeInt()));
llenar(raiz);
mostrar(raiz);
lectura_escritura.escribe("\n");
}
public static void mostrar(NodoN raiz){
if(raiz == null){
return;
}
lectura_escritura.escribe(raiz+" ");
mostrar(raiz.getHijo());
mostrar(raiz.getHermano());
}
public static void llenar(NodoN raiz){
int h;
lectura_escritura.escribe("Hijo de "+raiz+": ");
h = lectura_escritura.leeInt();
if(h>=0){
raiz.setHijo(new NodoN(new Integer(h)));
llenar(raiz.getHijo());
llenarHermano(raiz.getHijo());
}
}
private static void llenarHermano(NodoN raiz) {
lectura_escritura.escribe("Hermano de "+raiz+": ");
int h=lectura_escritura.leeInt();
if(h>=0){
raiz.setHermano(new NodoN(new Integer(h)));
llenar(raiz.getHermano());
llenarHermano(raiz.getHermano());
}
}
Ahora, la clase que uso para leer y escribir los datos de consola seria asi
public class lectura_escritura {
private static BufferedReader in;
static{
in = new BufferedReader(
new InputStreamReader(System.in));
}
public static void escribe(String s){
System.out.print(s);
}
public static String leeString(){
String buffer = null;
try {
buffer = in.readLine();
}catch(IOException e){
System.err.println("ES.leeString(): " + e);
}
return buffer;
}
public static int leeInt(){
return Integer.parseInt(leeString());
}
public static void main(String[] args) {
escribe("ingrese su nombre: ");
escribe("Hola " + leeString() + "\n\n");
escribe("ingrese su edad: ");
escribe("Tu tienes " + leeInt() + " años\n");
}
}
Espero lo puedas adaptar al C, si no ya por lo menos tienes una idea muy clara sobre como funciona, cualquier inquietud no dudes en preguntar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas