FellipePeixoto
(usa Linux Mint)
Enviado em 09/06/2016 - 23:03h
Boa noite Galera.
Problema ao usar ponteiro de ponteiro na linguagem C.
Tenho uma struct que abriga um ponteiro de ponteiro para outra struct, esse ponteiro de ponteiro tem a finalidade de alocar um vetor da mesma. Segue as structs.
struct Vertice{
int grau;
};
typedef struct Vertice vertice;
struct Aresta{
int a;
int b;
float peso;
};
typedef struct Aresta aresta;
typedef struct Grafo{
int graphtype;
vertice **vetVertice;
int Maxquant_vertices;
int nextvertex;
aresta **vetAresta;
int Maxquant_arestas;
int nextedge;
}grafo;
Até ai tudo bem. Consigo alocar devidamente a estrutura (fiz um debug e conferi os endereços e alocações) e suas dependências. O problema ta na hora de manipular. Eis uma situação que está acontecendo:
Vamos supor que eu já aloquei tudo anteriormente, p->vetvertice[0..8] (possui 9 posições) e agora só falta manipular/inserir dados na estrutura. Vou utilizar essa função:
int GVcriaVertice(grafo* p) {
if (p->nextvertex <= p->Maxquant_vertices) {
p->vetVertice[p->nextvertex]->grau = 0;
p->nextvertex++;
/*retorna o identificador do vertice
o vertice criado e sempre o atual-1*/
return (p->nextvertex - 1);
}
return 0;
}
O problema é quando chega em " p->vetVertice[p->nextvertex]->grau = 0; " .
Quando essa linha é executada a posição de número 8 do vetor é anulada.
Não sei se consegui explicar meu problema direito ou se não mostrei o suficiente do código, mas estou aqui qualquer coisa e posso explicar melhor. Desde já agradeço :)