Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node
- {
- int adj;
- }verNode;
- typedef struct graph
- {
- verNode **matrix;
- int* verList;
- int verNum;
- int edgeNum;
- }graph;
- graph* createGraph(int v)
- {
- graph *g=malloc(sizeof(graph));
- if(!g) exit(-1);
- g->matrix=NULL;
- g->verList=malloc(sizeof(verNode)*v);
- if(!g->verList) exit(-1);
- g->verNum=v;
- printf("Enter the value of vertices:n");
- for(int i=0;i<g->verNum;i++)
- {
- printf("Enter the value of vertex %d:n",i);
- scanf("%d",g->verList);
- }
- return g;
- }
- verNode** createMatrix(graph *g)
- {
- if(!g) exit(-1);
- g->matrix=malloc(sizeof(int*)*g->verNum*g->verNum);
- if(!g->matrix) exit(-1);
- for(int i=0;i<g->verNum;i++)
- {
- for(int j=0;j<g->verNum;j++)
- {
- (*g->matrix)->adj=0; //error:EXC_BAD_ACCESS (code=1, //address=0x0)
- }
- }
- return g->matrix;
- }
- void addEdge(graph *g,int v)
- {
- if(!g||!g->matrix||!g->verList) exit(-1);
- int ver1,ver2;
- g->edgeNum=v;
- printf("Enter the indexes of the vertices:n");
- for(int i=0;i<g->edgeNum;i++)
- {
- printf("Enter the index of vertex 1:n");
- scanf("%d",&ver1);
- printf("Enter the index of vertex 2:n");
- scanf("%d",&ver2);
- if(ver1>g->verNum-1||ver2>g->verNum-1) exit(-1);
- g->matrix[ver1][ver2].adj=1;
- g->matrix[ver2][ver1].adj=1;
- }
- }
- void printMatrix(graph *g)
- {
- if(!g||!g->matrix||!g->verList) exit(-1);
- printf("Print the adjacency matrix:");
- for(int i=0;i<g->verNum;i++)
- {
- for(int j=0;j<g->verNum;j++)
- {
- printf("%d ",g->matrix[i][j].adj);
- }
- printf("n");
- }
- }
- int main() {
- graph *g=createGraph(5);
- verNode **matrix =createMatrix(g);
- g->matrix=matrix;
- addEdge(g,7);
- return 0;
- }
- g->matrix = malloc(sizeof(int*) * g->verNum * g->verNum);
- g->matrix = malloc(g->verNum * sizeof(*g->matrix));
- for (int i = 0; i < verNum; i++) {
- g->matrix[i] = calloc(g->verNum, sizeof(*g->matrix[i]));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement