#include #include #define MAX 10 //maximo de elementos da lista typedef struct varesta{ //struct representando a aresta int u; int v; }aresta; typedef struct nlista { int prox[MAX]; //Proximo elemento da lista int ant[MAX]; //Elemento anterior da lista int info[MAX]; //Informacao int prim; //primeiro elemento int disp; //disponivel }lista; int v[MAX]; //vetor com os vertices do grafo int num_arestas; //numero de arestas lista listas[MAX]; //vetor com as listas usadas no programa aresta arestas[MAX]; //vetor com todas as arestas /* funcao que mostra todos os elementos da lista*/ void mostraTodos(lista l) { int i; if(l.prim == -1) { printf("Lista vazia"); exit(1); } else { printf("Pos\tAnt\tInfo\tProx\n"); for(i=0;i!=-1;i=l.prox[i]) { printf("%d\t%d\t%d\t%d\n",i,l.ant[i],l.info[i],l.prox[i]); } printf("Disp:%d\tPrim:%d\n",l.disp,l.prim); } } /* funcao que cria uma nova lista*/ lista make_set(int x) { lista nova; nova.prim = 0; nova.ant[0] = 0; nova.info[0] = x; nova.prox[0]=-1; nova.disp = 1; return nova; } /*funcao que retorna a lista onde esta o elemento x*/ lista find_set(int x){ lista ret; int i,j; for(j=0;j