实验图基本实际操作.ppt
文本预览下载声明
图 的基本算法实现 实验目的 1 掌握图的结构特征,以及两种存储结构的特点及适用范围 2 图的查找,插入和删除算法 3 掌握图的深度优先遍历算法 4 掌握图的宽度优先遍历算法 实验要求 认真阅读和掌握本实验的程序 上机运行程序。 保存和打印出程序的运行结果,并结合程序进行分析。 按照图的操作需要,重新组合程序并运行,打印出文件清单和运行结果。 实验内容 1 输入图的顶点集合和边集合,建立图的邻接矩阵,并打印。 2输入图的顶点集合和边集合,建立图的邻接表,并打印。 3查找指定边 4删除指定边 5插入指定边 6图的深度优先遍历算法BFS (递归算法) 。 7图的深度优先遍历算法DFS(递归算法) 。 运行结果: ===================主菜单=================== 1.打印图的邻接矩阵 2.打印图的邻接表 3.插入边 4.删除边 5.查找边 6.深度优先遍历图 7.宽度优先遍历图 0.结束程序运行 =========================================== 请输入您的选择(0,1,2,3,4,5,6,7) 1 请输入图的节点编号(如1):0,1,2,3 请继续输入图的边(如1,2) :0,1 请继续输入图的边(如1,2) :0,3 请继续输入图的边(如1,2) :1,3 请继续输入图的边(如1,2) :1,2 请继续输入图的边(如1,2) :2,3 请继续输入二叉树各结点的编号和对应的值:0,# ===============主菜单================ 1.打印图的邻接矩阵 2.打印图的邻接表 3.插入边 4.删除边 5.查找边 6.深度优先遍历图 7.宽度优先遍历图 0.结束程序运行 ==================================== 请输入您的选择(0,1,2,3,4,5,6,7,8,9,10) 2 程序清单 #includestdio.h #includestdlib.h #define M 100 typedef struct enode{ int AdjVex; T W; struct enode * NextArc; }ENode; //边节点 typedef struct graph{ int Vertices ; ENode** A; } Graph; //图 //函数原型声明 BOOL Exist(Graph g, int u, int v); BOOL Add(Graph *g, int u, int v, T w); ENode* NewENode( int vex, T weight, ENode* nextarc); BOOL Delete(Graph *g, int u, int v); void DFS(Graph g, int v, BOOL *visited); void BFS(Graph g, T v, BOOL *visited); //主函数 void main() { char ch; int k; do{ printf(\n\n\n); printf(\n========主菜单==========); printf(\n\n 1.打印图的邻接矩阵); printf(“\n\n 2.打印图的邻接表); printf(\n\n 3.插入边); printf(“\n\n 4.删除表); printf(“\n\n 5.查找边); printf(“\n\n 6.深度优先遍历图); printf(“\n\n 7.宽度优先遍历图); printf(\n\n 0.结束程序运行); printf(\n======================); printf(\n 请输入您的选择(0,1,2,3,4,5,6,7)); scanf(%d,k); * * =====主菜单===== 1.打印图的邻接矩阵 2.打印图的邻接表 3.插入边 4.删除边 5.查找边 6.深度优先遍历图 7.宽度优先遍历图 0.结束程序运行 =============== 请输入您的选择(0,1,2,3,4,5,6,7) 0 0 1 3 2 (a) 无向图G1 (d)
显示全部