F
friend.05
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[j]=NULL;
}
//for(i=0;i<MAX_VTX;i++)
//{
// for(j=0;j<MAX_VTX;j++)
//g.adjmtx[j]=(struct _graph_edge*)malloc(sizeof(struct
_graph_edge));
//
g.adjmtx[j]=(graph_edge_pointer)malloc(sizeof(graph_edge));
//}
for(i=0;i<MAX_VTX;i++)
{
gvt = &g.vertices;
gvt=(graph_vertex_pointer)malloc(sizeof(graph_vertex));
}
for(i=0;i<cnt;i++)
{
g.adjmtx[src][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.exectime);
printf("Enter label for Vertex %d\n",i);
scanf("%s",&g.vertices.label);
}
for(i=0;i<cnt;i++)
{
printf("Enter Produced for Edge %d\n",i);
scanf("%d", &g.adjmtx[src][snk[j]]->produced);
printf("Enter Consumed for Edge %d\n",i);
scanf("%d", &g.adjmtx[src][snk[j]]->produced);
printf("Enter Delay for Edge %d\n",i);
scanf("%d", &g.adjmtx[src][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
#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[j]=NULL;
}
//for(i=0;i<MAX_VTX;i++)
//{
// for(j=0;j<MAX_VTX;j++)
//g.adjmtx[j]=(struct _graph_edge*)malloc(sizeof(struct
_graph_edge));
//
g.adjmtx[j]=(graph_edge_pointer)malloc(sizeof(graph_edge));
//}
for(i=0;i<MAX_VTX;i++)
{
gvt = &g.vertices;
gvt=(graph_vertex_pointer)malloc(sizeof(graph_vertex));
}
for(i=0;i<cnt;i++)
{
g.adjmtx[src][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.exectime);
printf("Enter label for Vertex %d\n",i);
scanf("%s",&g.vertices.label);
}
for(i=0;i<cnt;i++)
{
printf("Enter Produced for Edge %d\n",i);
scanf("%d", &g.adjmtx[src][snk[j]]->produced);
printf("Enter Consumed for Edge %d\n",i);
scanf("%d", &g.adjmtx[src][snk[j]]->produced);
printf("Enter Delay for Edge %d\n",i);
scanf("%d", &g.adjmtx[src][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