Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //alloca inizializza a NULL n vertici e le liste di adiacenza di un grafoList
- grafoList *initGrafoList(int n){
- grafoList *g;
- int i;
- g=(grafoList*)malloc(sizeof(grafoList));
- g->adj=(edge**)malloc(n*sizeof(edge*));
- g->nv=n;
- g->allocati=n;
- for(i=0;i<n;i++){
- g->adj[i]=(edge*)malloc(sizeof(edge));
- (g->adj[i])->next=NULL;
- (g->adj[i])->key=NULL;
- (g->adj[i])->pesoArco=0;
- }
- return g;
- }
- //inserisce un vertice nel grafo
- void *insertEdgeList(void *grafo,FUNCTION *fun, void *k){
- grafoList *g=(grafoList*)grafo;
- if(g==NULL){
- grafoList *G=initGrafoList(1);
- (G->adj[0])->key=malloc(fun->all(k));
- (G->adj[0])->key=k;
- return G;
- }
- if(existEdgeList(g,k,fun)==0){
- if(g->nv >= g->allocati){
- g->allocati=g->allocati*2; //rialloco il doppio dello spazio precedentemente allocato
- g->adj=realloc(g->adj,g->allocati*sizeof(edge));
- }
- g->adj[g->nv]=(edge*)malloc(sizeof(edge)); //gli array partono da 0 perciò incremento dopo nv
- (g->adj[g->nv])->key=malloc(fun->all(k));
- (g->adj[g->nv])->key=k;
- (g->adj[g->nv])->next=NULL;
- (g->adj[g->nv])->pesoArco=0;
- g->nv++;
- }
- else
- printf("Vertice gia' presente\n");
- return g;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement