- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构
课程设计报告
设计题目: 图的基本操作与实现
专 业
班 级
学 生
学 号
指导教师起止时间
年 学期
目 录
1.问题描述:实现图的一些基本操作 .....
2.基本要求: .........................
求每个顶点的度,输出结果; .........
3.测试数据: .........................
4.算法思想: .........................
自选存储结构创建一个图: ........
(2)求每个顶点的度: ................
(3)图的深度优先遍历: ..............
(4)图的广度优先遍历: ..............
(5)判断有向图的强连通性: ..........
(6)用邻接矩阵的信息生成邻接表: ....
6.数据结构: .........................
7.功能模块图 .........................
8.源程序: ...........................
9.心得体会: .........................
问题描述:实现图的一些基本操作
基本要求:
错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。
自选存储结构,输入含n 个顶点(用字符表示顶点)和e 条边的图 G; (2)求每个顶点的度,输出结果;
指定任意顶点x 为初始顶点,对图G 作 DFS 遍历,输出DFS 顶点序列(提示: 使用一个栈实现DFS);
指定任意顶点x 为初始顶点,对图G 作 BFS 遍历,输出BFS 顶点序列(提示: 使用一个队列实现BFS);
输入顶点x,查找图G:若存在含x 的顶点,则删除该结点及与之相关连的边, 并作 DFS 遍历(执行操作 3);否则输出信 息“无 x”;
判断图G 是否是连通图,输出信息“YES”/“NO”;
如果选用的存储结构是邻接矩阵,则用邻接矩阵的信息生成图G 的邻接表, 即复制图 G,然再执行操作(2);反之亦然。
测试数据:
有向图的顶点数n 和有向图的边数e 由用户从键盘敲入4.算法思想:
自选存储结构创建一个图:通过用户从键盘敲入的两个数值分别确定图的顶点数和边数,选择邻接矩阵存储结构将图的结点信息存储在一个顺序表中,图的边信息存储在一个二维数组中。
求每个顶点的度:
邻接矩阵存储结构下求每个顶点的度:利用图的邻接矩阵,每个顶点所在行和所在列的边的权值如果存在则该顶点的度+1,依次算出每个顶点的度,并且记录在一个数组中输出。
邻接表存储结构下求每个顶点的度:定义一个邻接边指针循环指向顶点的邻接边单链表头结点,当结点不空时,该顶点的出度+1,邻接边弧头结点的入度+1, 依次求出每个顶点的出度和入度之和就为该顶点的度。
图的深度优先遍历:采取邻接矩阵结构,指定任意顶点x 为初始顶点1.访问结点v 并标记结点v 已访问;
查找结点v 的第一个邻接结点w;
若结点v 的邻接结点w 存在,则继续执行,否则算法结束;
若结点w 尚未被访问,则递归访问结点w;
查找结点v 的w 邻接结点的下一个邻接结点w,转到步骤 3。
图的广度优先遍历:采取邻接矩阵结构,指定任意顶点x 为初始顶点,利用顺序循环队列以保持访问过的结点的顺序
首先访问初始结点v 并标记结点v 为已访问;
结点v 入队列;
当队列非空时则继续执行,否则算法结束;
出队列取得队头结点u;
查找u 的第一个邻接结点w;
若u 的邻接结点w 不存在则转到步骤 3,否则循环执行下列步骤: 若结点w 尚未被访问,则访问结点w 并标记结点 w 为已访问;
结点w 入队列;
查找结点u 的w 邻接结点的下一个邻接结点w,转到步骤 6 。
判断有向图的强连通性:采取邻接表结构,在图中寻找一个包含所有顶点且首尾相连的环,若这样的环存在,则该图为强连通图,否则不为强连通图。
用邻接矩阵的信息生成邻接表:定义一个邻接表的边信息结构体,将邻接矩阵的边信息转换成邻接表的边信息存储到邻接边的单链表中。
模块划分:
mian():主函数模块。在主函数模块中调用以下函数:
void CreatGraph(AdjMGraph *G,DataType v[],int
n,RowColWeight E[],int e):创建一个邻接矩阵存储结构的图;
void Print(AdjMGraph *G):输出图的邻接矩阵;
void MVertices(AdjMGraph *G,DataType
文档评论(0)