图的基本操作
图这一章我一直觉得自己学的不是很好。。。这次就只放代码,不敢多说什么了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| typedef char VertexType; typedef int EdgeType;
#define MAXVEX 100
typedef struct EdgeNode{ int adjvex; EdgeType weight; struct EdgeNode *next; }EdgeNode;
typedef struct VertexNode{ VertexType data; EdgeNode *firstedge; }VertexNode, AdjList[MAXVEX];
typedef struct{ AdjList adjList; int numVertexes, numEdges; }GraphAdjList;
void CreatALGraph(GraphAdjList *G){ int i, j, k; EdgeNode *e; printf("请输入顶点数和边数:"); scanf("%d, %d", &G->numVertexes, &G->numEdges); for (i = 0; i < G->numVertexes; i++){ scanf("%c", &G->adjList[i].data); G->adjList[i].firstedge = NULL; } for (k = 0; k < G->numEdges; k++){ printf("输入(vi, vj)上的顶点序号:\n"); scanf("%d, %d", &i, &j); e = (EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex = j; e->next = G->adjList[i].firstedge; G->adjList[i].firstedge = e;
e = (EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex = i; e->next = G->adjList[j].firstedge; G->adjList[j].firstedge = e; } }
|