- 0
- 0
- 约5.42千字
- 约 8页
- 2018-04-15 发布于浙江
- 举报
[2018年最新整理]图的遍历正文
需求分析
本演示程序中,元素限定为char型。
演示程序以用户和计算机的对话方式执行,即在计算机终端显示“提示信息“后,由用户在键盘上输入符合演示程序中规则的图的边数,结点数;相应的先序和按层遍历会显示其后。
程序执行命令包括:1)根据用户给出的图字符串进行对临接表的先序构建 2)输出构建的临接表
概要设计
为实现上述程序功能,需要三个抽象数据类型:队列和图
1.图的抽象数据类型定义为:
ADT Graph{
数据对象V:顶点集
数据关系R:R={VR}
VR={v,w|v,w(V,v,w表示从v到w的弧}
基本操作:
CreateGraph(G,V,VR); //构造图
DestroyGraph(G); //销毁图
LocateVex(G,u); //顶点u在图中位置
GetVex(G,v);//取顶点v的值
PutVex(G,v,value); //顶点v赋值
FirstAdjVex(G,v); //v的第一个邻接点
NextAdjVex(G,v,w); //v相对于w的下一个邻接点
InsertVex(G,v); //增添顶点v
DeleteVex(G,v); //删除顶点v及相关弧
InsertArc(G,v,w); //增添弧v,w
DeleteArc(G,v,w); //删除弧v,w
DFSTraverse(G,v,Visit()); //深度优先搜索DFS
BFSTraverse(G,v,Visit()); //广度优先搜索BFS
}
本程序包含四个模块:
1)主程序模块:
main()
{
初始化一个空队列;(利用CreateQueue(Q);函数)
进入用户输入图顶点数和边数阶段;
进入用户输入图的边信息阶段;
根据用户输入的图的边信息进行对邻接表的构建(利用CreateGraph(G);这个函数)输出邻接表两种遍历输出构建的邻接表(利用DFS(q,i); BFS(G);这2个函数)
}
图单元模块-------实现图抽象数据类型。
邻接表2种遍历单元模块(包含队列单元模块)
4) 图节点结构单元模块-------定义图的节点结构。
各模块是之间关系如下:
主程序模块
图单元模块-
邻接表2种遍历单元模块
图节点结构单元模块
详细设计
元素类型(此程序固定为char) 结点类型
typedef struct{
int *base;
int *top;
int length;
}Queue; //队列结点
typedef struct arcNode{
int locate;
struct arcNode *next;
}arcNode; //边结点
typedef struct VNode{
char data;
arcNode *firstarc;
}VNode,V[20]; //顶点结点
typedef struct {
int vexnum,arcnum;
char kind;
V vex;
}ALGraph; //图
2图的基本操作:
CreatGraph(ALGraph *p) //创建邻接表
DFS(VNode *p,int a); //先序遍历邻接表
BFS(G); //按层遍历邻接表
图所有操作代码:
void CreatGraph(ALGraph *p){
int i,arc1,arc2;
char a,b;
arcNode *m,*n;
printf(\n Please enter the vexnum,the arcnum and the kind of this Graph.\n);
scanf(%d,(*p).vexnum);
scanf(%d,(*p).arcnum);
printf(\n Please enter the data of the vex.(Must Be Different!!!)\n);
for(i=0;i(*p).vexnum;i++){
(*p).vex[i].data=getche();
(*p).vex[i].firstarc=NULL;
}
printf(\n\n Please enter the arc of this Graph,such as ac.\n);
for(i=0;i(*p).arcnum;i++){
a=getche();
b=getche();
arc1=Locate(a);
arc2=L
您可能关注的文档
- [2018年最新整理]国家公共卫生信息系统建设方案.doc
- [2018年最新整理]国家公共卫生服务知识知识讲座.doc
- [2018年最新整理]国学常识题库.ppt
- [2018年最新整理]国家公务员面试专项精讲系列之综合分析能力.docx
- [2018年最新整理]国外奢侈家具品牌.doc
- [2018年最新整理]国外高端奢华家具饰品挂画布艺顶级配饰 软装设计方案素材【名师联.596期】.doc
- [2018年最新整理]国家基本公共卫生服务孕产妇保健和儿童保健.ppt
- [2018年最新整理]国家基本公共卫生服务规范(2011年版)高血压糖尿病部分及填表说明.doc
- [2018年最新整理]国家基本公共卫生服务规范-2型糖尿病患者健康管理.ppt
- [2018年最新整理]国家基本公共卫生服务规范0-6岁.ppt
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)