domingo, 26 de junio de 2011

Algunos Ejercicios de Grafos

Ejercicio Nro 01

  void PresentarGrafo(tgrafo g)

{

   tnodo n;

   tarco a;



   n=PrimerNodo(g);

   while (n!=Nulo) {

      a=PrimerArco(n,g);

      while (a!=Nulo) {

         printf(\"%s -> %s \",a->origen->etiq,a->destino->etiq);

         printf(\" (%f)\\n\",a->valor);

         a=SiguienteArco(n,a,g);

      }

      n=SiguienteNodo(n,g);

   }

}



Ejercicio Nro 02

void InsertarNodo(tetq dato, tgrafo g)

{

   tnodo aux,p;



   aux = (tnodo)malloc(sizeof(struct nodo));

   if (aux == NULL)

      error(\"Error Memoria Insuficiente.\");

   else {

      p=g;

      while(p->sig != NULL)

         p = p->sig;

      aux->etiq = (char *)malloc(sizeof (char)*TE);"+

      if (aux->etiq == NULL)

         error(\"Error Memoria Insuficiente.\");

      aux->nodo = p->nodo+1;

      strcpy(aux->etiq,dato);+

      aux->ady = NULL;

      aux->inc = NULL;

      aux->sig = NULL;

      p->sig = aux;

      g->nodo++;

   }



Ejercicio Nro 03



tgrafo DesconectarNodo(tnodo a_eliminar,tgeafo g)

{

   tgrafo g_nd;

   tnodo n;

   tnodo org;dst;

   tnodo o,d;

   tarco a;



   g_nd = Crear();

   for (n=PrimerNodo(g); n!=NULL; n=SiguienteNodo(n,g))

                  InsertarNodo(Etiqueta(n,g),g_nd);



   for (n=PrimerNodo(g); n!=NULL; n=SiguienteNodo(n,g))

                 for (a=PrimerArco(n,g); a!=NULL; a=SiguienteArco(n,a,g)) {

                               org = NodoOrigen(a,g);

                               dst = NodoDestino(a,g);

        if ((org!=a_eliminar) && dst!=a_eliminar)) {

                   o = LocalizaLabel(Label(org,g), g_nd);

                                  d = LocalizaLabel(Label(dst,g), g_nd);

                                  InsertarArco(o,d,g_nd);                          

        }

     }

                 return g_nd;

}


No hay comentarios:

Publicar un comentario