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_poin ter adjmtx[MAX_VTX][MAX_VTX];
};
graph_pointer graph_construct (int *src, int *snk, int cnt)
{
graph_type g;
graph_pointer gpt;
graph_vertex_po inter 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_V TX;i++)
//{
// for(j=0;j<MAX_V TX;j++)
//g.adjmtx[i][j]=(struct _graph_edge*)ma lloc(sizeof(str uct
_graph_edge));
//
g.adjmtx[i][j]=(graph_edge_po inter)malloc(si zeof(graph_edge ));
//}
for(i=0;i<MAX_V TX;i++)
{
gvt = &g.vertices[i];
gvt=(graph_vert ex_pointer)mall oc(sizeof(graph _vertex));
}
for(i=0;i<cnt;i ++)
{
g.adjmtx[src[i]][snk[j]]=(graph_edge_po inter)malloc(si zeof(graph_edge ));
}
for(i=0;i<MAX_V TX;i++)
{
printf("Enter execution time for Vertex %d\n",i);
scanf("%d",&g.v ertices[i].exectime);
printf("Enter label for Vertex %d\n",i);
scanf("%s",&g.v ertices[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_vt x,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_p ointer;
/* An edge in a graph. */
typedef struct _graph_edge graph_edge;
/* A pointer to a graph edge. */
typedef graph_edge *graph_edge_poi nter;
/* 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_poin ter *graph_edge_arr ay;
graph_pointer graph_construct (int *, int *, int);
#endif
#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_poin ter adjmtx[MAX_VTX][MAX_VTX];
};
graph_pointer graph_construct (int *src, int *snk, int cnt)
{
graph_type g;
graph_pointer gpt;
graph_vertex_po inter 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_V TX;i++)
//{
// for(j=0;j<MAX_V TX;j++)
//g.adjmtx[i][j]=(struct _graph_edge*)ma lloc(sizeof(str uct
_graph_edge));
//
g.adjmtx[i][j]=(graph_edge_po inter)malloc(si zeof(graph_edge ));
//}
for(i=0;i<MAX_V TX;i++)
{
gvt = &g.vertices[i];
gvt=(graph_vert ex_pointer)mall oc(sizeof(graph _vertex));
}
for(i=0;i<cnt;i ++)
{
g.adjmtx[src[i]][snk[j]]=(graph_edge_po inter)malloc(si zeof(graph_edge ));
}
for(i=0;i<MAX_V TX;i++)
{
printf("Enter execution time for Vertex %d\n",i);
scanf("%d",&g.v ertices[i].exectime);
printf("Enter label for Vertex %d\n",i);
scanf("%s",&g.v ertices[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_vt x,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_p ointer;
/* An edge in a graph. */
typedef struct _graph_edge graph_edge;
/* A pointer to a graph edge. */
typedef graph_edge *graph_edge_poi nter;
/* 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_poin ter *graph_edge_arr ay;
graph_pointer graph_construct (int *, int *, int);
#endif
Comment