Boa Noite a todos,
Estou tendo um problema de falha de segmentação em um código feito em c para criar um grafo. O meu problema surgiu quando implementei a função create_graph, por algum motivo na hora de fazer a leitura das arestas ele da falha de segmentação. Antes a função create_graph estava dentro do main e não dava erro mas uma vez que criei a função começo o erro.
Espero alguem posso me ajudar e agradeço qualquer dica. O código do meu programa vai a seguir.
#include<stdio.h>
#include<stdlib.h>
typedef struct vertex_neighbour{
int label;
int emarked;
}VN;
typedef struct vertex{
int label;
VN *vet;
int vmarked;
int neighbour_prox;
}V;
typedef void* graph;
graph create_graph(int n){
int i;
V *list;
list = malloc(n+1*sizeof(V));
for(i=0;i<n;i++){
list.label = i+1;
list.vet = malloc(n*sizeof(VN));
list.vet[0].label = 0;
list.neighbour_prox = 0;
}
list.label = -1;
return list;
}
void armazena( V l[],int n1,int n2){
int k,i,j;printf("\n");
k=0;
while (l[k].label!=-1){
printf("%d ",l[k].label);
k++;
}printf("\n");
i = n1-1;
l.neighbour_prox++;
j = l.neighbour_prox;
l.vet[j-1].label = n2;
l.vet[j].label = 0;
}
void main(){
int n, no1,no2,i,j;
scanf("%d",&n);
V *lista;
graph G;
G=create_graph(n);
while(scanf("%d %d",&no1,&no2) > 0){
armazena(G,no1,no2);
armazena(G,no2,no1);
printf("%d %d\n", no1,no2);
}
for(i=0;i<n;i++){
printf("\nno = %d\n vizinhos (%d): ",lista.label,lista.vet[0].label);
for(j=0;j<lista.neighbour_prox;j++){
printf("%d ", lista.vet[j].label);
}
}
printf("\n");
}