数据结构练习题 017 图 邻接多重表
同样没有写遍历,只有增减边、顶点。
#ifndef GRAPH_H_INCLUDED #define GRAPH_H_INCLUDED #include <stdbool.h> #define MAX_NAME 32 #define MAX_NODE 32 /* 顶点数据域结构 */ typedef struct tag_graph_node_data { char name[MAX_NAME]; } GRAPH_NODE_DATA; /* 边结构 */ typedef struct tag_graph_edge { int i; int j; int weight; struct tag_graph_edge *iNext; struct tag_graph_edge *jNext; } GRAPH_EDGE; /* 顶点结构 */ typedef struct tag_graph_node { GRAPH_NODE_DATA data; GRAPH_EDGE *firstEdge; } GRAPH_NODE; /* 图结构 */ typedef struct tag_graph { int numN; GRAPH_NODE node[MAX_NODE]; } GRAPH; /* 创建图 */ GRAPH *CreateGraph(char *fn); /* 销毁图 */ void DestroyGraph(GRAPH *g); /* 增加顶点 */ bool AddNode(GRAPH *g, char *name); /* 增加边 */ bool AddEdge(GRAPH *g, char *name1, char *name2, int weight); /* 删除顶点 */ bool DelNode(GRAPH *g, char *name); /* 删除边 */ bool DelEdge(GRAPH *g, char *name1, char *name2); /* 查找边 */ GRAPH_EDGE *GetEdge(GRAPH *g, char *name1, char *name2); /* 显示图的边关系 */ void PrintGraph(GRAPH *g); #endif // GRAPH_H_INCLUDED
本文章来至源码世界 http://www.ymsky.net/views/68650.shtml