derefrencing pointer to incomplete type



1)

#include <stdio.h>
#include <stdlib.h>
#include "graph.h"

#define MAX_VTX 4


struct _graph_vertex {


char *label;
int exectime;



};


struct _graph_edge {

int produced, consumed, delay;



};


struct _graph {

graph_vertex vertices[MAX_VTX];
graph_edge_pointer adjmtx[MAX_VTX][MAX_VTX];



};


graph_pointer graph_construct(int *src, int *snk, int cnt)
{
graph_type g;
graph_pointer gpt;
graph_vertex_pointer gvt;
int i,j;

for(i=0 ; i < MAX_VTX ; i++)
{
for(j=0 ; j < MAX_VTX; j++)
g.adjmtx[i][j]=NULL;
}


//for(i=0;i<MAX_VTX;i++)
//{
// for(j=0;j<MAX_VTX;j++)
//g.adjmtx[i][j]=(struct _graph_edge*)malloc(sizeof(struct
_graph_edge));
//
g.adjmtx[i][j]=(graph_edge_pointer)malloc(sizeof(graph_edge));


//}


for(i=0;i<MAX_VTX;i++)
{
gvt = &g.vertices[i];

gvt=(graph_vertex_pointer)malloc(sizeof(graph_vertex));
}
for(i=0;i<cnt;i++)
{


g.adjmtx[src[i]][snk[j]]=(graph_edge_pointer)malloc(sizeof(graph_edge));

}


for(i=0;i<MAX_VTX;i++)
{
printf("Enter execution time for Vertex %d\n",i);
scanf("%d",&g.vertices[i].exectime);
printf("Enter label for Vertex %d\n",i);
scanf("%s",&g.vertices[i].label);
}


for(i=0;i<cnt;i++)
{
printf("Enter Produced for Edge %d\n",i);
scanf("%d", &g.adjmtx[src[i]][snk[j]]->produced);
printf("Enter Consumed for Edge %d\n",i);
scanf("%d", &g.adjmtx[src[i]][snk[j]]->produced);
printf("Enter Delay for Edge %d\n",i);
scanf("%d", &g.adjmtx[src[i]][snk[j]]->produced);


}


gpt = &g;
printf("%d",gpt->vertices[1].exectime);
return gpt;



}


2)

#include <stdio.h>
#include <stdlib.h>
#include "graph.h"

int main()
{


int src_vtx[]= {0,1,3,0,3};
int snk_vtx[] = {1,2,2,3,1};
int edgcnt = sizeof(src_vtx)/sizeof(int);
graph_pointer gp;


gp = graph_construct(src_vtx,snk_vtx,edgcnt);


printf("%d",gp->vertices[1].exectime);


I am getting error over here:


gcc : derefrencing pointer to incomplete type
vc++ : left of 'vertices' specifies undefined struct/union '_graph'


return 0;




3) graph.h


#ifndef _graph_h
#define _graph_h


#include "floatmath.h"


/* A vertex in a graph. */
typedef struct _graph_vertex graph_vertex;


/* A pointer to a graph vertex. */
typedef graph_vertex *graph_vertex_pointer;


/* An edge in a graph. */
typedef struct _graph_edge graph_edge;


/* A pointer to a graph edge. */
typedef graph_edge *graph_edge_pointer;


/* A graph. */
typedef struct _graph graph_type;


/* A pointer to a graph. */
typedef graph_type *graph_pointer;


/* An array of pointers to graph edges. */
typedef graph_edge_pointer *graph_edge_array;


graph_pointer graph_construct(int *, int *, int);


#endif

.



Relevant Pages