Exercícios

  1. Descomprima o ficheiro lab11.zip, fornecido abaixo, que contém quatro ficheiros: GRAPH.h, GRAPHmat.c, GRAPHlst.c e client.c. Os ficheiros GRAPH.h, GRAPHmat.c e GRAPHlst.c implementam um ADT grafo (não dirigido), utilizando matriz de adjacências e listas de adjacências, respectivamente. O ficheiro client.c implementa um cliente que utiliza o ADT grafo. A Makefile fornecida permite gerar dois executáveis: graphmat e graphlst. Analise cuidadosamente todos o ficheiros fornecidos.
  2. Modifique os ficheiros GRAPHmat.c e GRAPHlst.c por forma a que o ADT implemente um grafo dirigido.
  3. Complete a função GRAPHremoveE, no ficheiro GRAPHlst.c, que implementa a remoção de um arco. Verifique que o número de arcos final é 10.
  4. Complete a função GRAPHmaxdegree, nos ficheiros GRAPHmat.c e GRAPHlst.c, que calcula o máximo dos graus de todos os vértices. O grau de um vértice é o número de arcos incidentes nesse vértice. Verifique que o valor do grau máximo calculado é 3.
  5. Complete a função GRAPHdestroy, nos ficheiros GRAPHmat.c e GRAPHlst.c, que liberta todas as estruturas de dados dinâmicas associadas a um grafo.
  6. Modifique todos os ficheiros necessários, por forma a implementar um grafo pesado, com pesos positivos (superiores a 0).

Attachments