- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计
设计说明书图的遍历和生成树求解问题的研究与实现学生姓名 学号 班级 信管061 成绩 指导教师计算机科学与技术系
2008年3月8日
数据结构 课程设计评阅书
题目 图的遍历和生成树求解问题的研究与实现 学生姓名 秦洁 学号 04 指导教师评语及成绩指导教师签名:年 月 日 答辩评语及成绩答辩教师签名:年 月 日 教研室意见
总成绩:室主任签名:年 月 日课程设计任务书
2007—2008学年第一学期
专业:信息管理与信息系统 学号: 04姓名:秦洁课程设计名称:数据结构课程设计设计题目:图的遍历和生成树求解问题的研究与实现完成期限:自2008 年 2 月 25 日至 2008 年 3 月 7 日共 2 周
设计依据、要求及主要内容(可另加附页):
设计依据:数据结构算法设计
要求:先任意创建一个图;
图的DFS,BFS的递归和非递归算法的实现最小生成树(两个算法)的实现,求连通分量的实现要求用邻接矩阵、邻接表、十字链表多种结构存储实现。
主要内容:对创建的图采用邻接矩阵、邻接表、十字链表等多种结构存储,并完成图的DFS和BFS操作。指导教师(签字):教研室主任(签字):批准日期:年 月 日
摘 要
图是一种目 录
1 课题描述……………………………………………………………………………1
2 设计过程……………………………………………………………………………22.1 设计思路……………………………………………………………………2
2.2 设计流程图…………………………………………………………………3
2.3 程序源代码…………………………………………………………………4
3 编译运行………………………………………………………………………… 17
总结………………………………………………………………………………… 19
参考文献…………………………………………………………………………… 201 课题描述
图是一种是一种2.3 程序源代码
#include iostream
#include malloc.h
using namespace std;
#define int_max 10000
#define inf 9999
#define max 20
//…………………………………………邻接矩阵定义……………………
typedef struct ArcCell
{
int adj;
char *info;
}ArcCell,AdjMatrix[20][20];
typedef struct
{char vexs[20];
AdjMatrix arcs;
int vexnum,arcnum;//有向图的当前顶点数和弧数
}MGraph_L;
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
int localvex(MGraph_L G,char v)//返回V的位置
{int i=0;
while(G.vexs[i]!=v)
{ ++i;
}
return i;}
int creatMGraph_L(MGraph_L G)//创建图用邻接矩阵表示
{char v1,v2;
int i,j,w;
cout…………创建无向图…………endl请输入图G顶点和弧的个数:(4 6)不包括“()”endl;
cinG.vexnumG.arcnum;
for(i=0;i!=G.vexnum;++i)
{cout输入顶点iendl;
cinG.vexs[i];}
for(i=0;i!=G.vexnum;++i)
for(j=0;j!=G.vexnum;++j)
{ G.arcs[i][j].adj=int_max;G.arcs[i][j].info=NULL;
}
for(int k=0;k!=G.arcnum;++k)
{ cout输入一条边依附的顶点和权:(a b 3)不包括“()”endl;cinv1v2w;//输入一条边依附的两点及权值i=localvex(G,v1);//确定顶点V1和V2在图中的位置j=localvex(G,v2);G.arcs[i][j].adj=w;G.arcs[j][i].adj=w;
}
cout图G邻接矩阵创建成功!endl;
return G.vexnum;
}
void ljjzprint(MGraph_L G)
{ int i,j;
for(i=0;i!=G.vexnum;++i)
文档评论(0)