C 语言课程设计报告
题目:图的遍历
班级:(兴湘)计算机 学号:2005182448 姓名:姚晶晶
完成日期:2006-11-11
一、 程序分析
1. 以邻接多重表为存储结构,实现连通或非连通的无向图的深度优先与广度优先遍历。
2. 设图的结点不超过 30 个,每个结点用一个编号表示。通过输入图的边输入一个图,每条
边为一个数对。
3. 问题描述:
4. 以第一个结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边。
5. 测试数据:n=5
1)<1,2>,<1,3>,<1,5>,<2,3>,<2,4>,<3,4>,<4,5>;
2)<1,2>,<1,3>,<2,4>,<2,5>;
3)<1,4>,<2,4>,<3,5>,<4,5>,<3,3>;
6.运行结果:
邻接矩阵――1) 0 1 1 0 1 2) 0 1 1 0 0 3) 0 0 0 1 0
1 0 1 1 0 1 0 0 1 1 0 0 0 1 0
1 1 0 1 0 1 0 0 0 0 0 0 1 0 1
0 1 1 0 1 0 1 0 0 1 1 1 0 0 1
1 0 0 1 0 0 1 0 1 0 0 0 1 1 0
广度遍历――1,2,3,4,5;
深度遍历――1)1,2,3,4,5;
2)1,2,4,5,3;
3)1,4,2,5,3;
二、 概要设计
本程序包含四个模块:
1)主程序模块:
void main()
{处理命令
}
2)深度优先遍历模块:void dfs(Graph *g,int vex){函数体
}/*按深度遍历*/
3)广度优先遍历模块:void BESTraveres(Graph *g){函数体
} /*按层遍历*/
4)邻接多重表的构造模块。/*构造多重链表*/
各模块之间的调用关系如下:
主程序模块
邻接多重表的构造模块