数据结构习题课课件.ppt
《数据结构习题课课件.ppt》由会员分享,可在线阅读,更多相关《数据结构习题课课件.ppt(34页珍藏版)》请在三一办公上搜索。
1、数据结构习题 第 5 章,吉林大学计算机科学与技术学院谷方明,第5章作业,5-1,5-7,5-12,5-13,5-14,5-15,5-16,5-1,给出下图所示的邻接矩阵和邻接表,参考答案,参考答案:注意头指针数组,5-7,用邻接矩阵存储一个包含1000个顶点和1000条边的图,则该图的邻接矩阵中有多少元素?有多少非零元素?该矩阵是否为稀疏矩阵?,参考答案,)矩阵中元素个数:1000000)若图为有向图:非零元素的个数:1000 若图为无向图:非零元素的个数:2000)该矩阵是稀疏矩阵,5-12,设计一个算法,检测采用邻接表方法存储、具有n个顶点的有向图中是否存在从顶点v到顶点u的路径,若存在
2、路径,算法给出信息TRUE,否则,给出信息FALSE.,参考答案,算法Path(v,u.flag)/*判断v到u是否有路.有,flag为TRUE,否则FALSE.vis全局,记录结点访问状态*/P1递归出口 IF(v=u)THEN(flag TRUE.RETURN.)P2依次判断v的邻接顶点是否有到u的路 visv=1.p Headv.WHILE(pNULL)DO(IF(visVerAdj(p)=0)(Path(VerAdj(p),u,flag).IF(flag=TRUE)THEN RETURN.)p Link(p).).P3不存在路 flag=FALSE.,时间复杂度O(n),空间复杂度O(
3、n)其它方法调用DFS或BFS,检查vis数组,判断是否在一个连通分支。Warshall,判断v、u之间是否连通,5-13,设G(V,E)是有向图,请给出算法,判断G中是否有回路,并要求算法的复杂性为O(n+e)。,方法一:深度优先搜索,思想:深搜时,每个结点有两个状态,标记是否被访问过(0未访问,1已访问过)。判环时,多引入一个状态,标记结点正在访问中(-1正在访问中)。如果一个结点正在访问中,又遍历到该接点,那个存在环路。这种状况是由于出现了反向边,即后代指向祖先的边。如果图中有多个连通分支,需要对每个连通分支都判断。,算法Cycle(v.flag)/*判断以v为起点的连通分支是否有环,若
4、有,flag为TRUE,否则FALSE.vis全局,记录每个点的访问状态*/C1标记v正在访问中 visv=-1.C2深度优先遍历 p Headv.WHILE(pNULL)DO(if(VerAdj(p)=-1)(flag=TRUE.RETURN)if(VerAdj(p)=0)(Cycle(VerAdj(p),flag).IF(flag=TRUE)THEN RETURN.)p Link(p).)C3不存在路 visv=1.flag=FALSE.,方法二:拓扑排序,void Graph:TopoOrder()int top=-1;for(int i=0;in;i+)if(counti=0)coun
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题 课件
链接地址:https://www.31ppt.com/p-5270464.html