- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DBS第十章节s图
0 3 1 2 4 5 3 6 6 6 5 5 5 4 2 1 1 2 3 4 5 0 -1 ∞ nearest lowcost 1 -1 ∞ 2 -1 ∞ 3 -1 ∞ 4 -1 ∞ 5 -1 ∞ 6 1 5 5 0 0 0 0 6 4 2 3 2 2 5 2 0 0 1 V’ V-V’ 0 2 5 3 1 4 普里姆算法的C语言程序(【程序10-10】 )。 void Prim(Graph g, int k, int *nearest, T* lowcost) { int i, j, min, n=g.Vertices; BOOL mark[MaxVertices]; ENode *p; if (k0 || kn-1){ printf(BadInput\n); return ; } for (i=0; in; i++){ /* 初始化*/ nearest[i]=-1; mark[i]=FALSE; lowcost[i]=MaxNum; } 程序的时间复杂度: O(n2) lowcost[k]=0; nearest[k]=k; mark[k]=TRUE; for (i=1; in; i++) { for( p=g.A[k]; p; p=p-NextArc) { j= p-AdjVex; if (( !mark[j] )( lowcost[j] p-W )){ lowcost[j]=p-W; nearest[j]=k; } } min=MaxNum; for (j=0; jn; j++) if ((!mark[j])(lowcost[j]min)){ min=lowcost[j]; k=j; } mark[k]=TRUE; } } 修改lowcost和nearest的值 求下一条最小权值的边 将顶点k加到生成树上 将源点k加入到生成树上 画出给定图的最小的生成树,要求从顶点1出发。 1 3 2 5 4 7 6 8 5 15 3 10 12 2 7 9 6 1 3 2 7 4 6 5 5 3 7 2 6 15 浏览 查询 删除 插入 创建空表 选择要进行的操作 插入学生记录 删除学生记录 查询学生记录 显示所有学生记录 退出程序 主程序: 循环语句 调用PrintElements函数,显示表中所有记录 显示主菜单 链接表示需要清空链表 Clear(lst); 实验: element firstArc (c) 顶点结点 存放顶点的名称及其他信息 指向u的第一个边结点 u ? 1 ? 3 ? v 0 2 ? 4、每个单链表可设立一个存放顶点u的有关信息的表头结点,也称顶点结点。顶点结点存入一个一维数组。 01 2 3 2 ? 1 0 3 ? 1 3 ? 1 3 ? 2 0 (a)图G1的邻接表 0 1 3 2 图G1 01 2 3 ? 1 ? 3 ? 0 0 2 ? (b)图G2的邻接表 0 1 3 2 图G2 01 2 3 ? 3 3 ? 0 1 1 1 ? 2 5 ? 0 4 (c)图G3的邻接表 4 0 1 3 2 图G3 3 1 1 5 typedef struct enode{ int AdjVex; T W; struct enode * NextArc; }ENode; typedef struct graph{ int Vertices ; ENode** A; } Graph; 边结点的结构类型 图中的顶点数 01 2 3 ? 1 ? 3 ? 0 0 2 ? A 邻接表的表头组成一维指针数组,A是指向该数组的指针 3. 建立邻接表 函数CreateGraph构造一个有n个顶点,但不包含边的有向图。由于图的顶点数事先并不知道,所以我们使用动态存储分配的一维指针数组。 void CreateGraph(Graph* g, int n) { int i; g-Vertices=n; g-A=(ENode**)malloc(n*sizeof(ENode*)); for(i=0; in; i++) g-A[i]=NULL; } 0 1 ... n-1 ... ? ? ? 搜索、插入或删除从顶点u发出的边,只在A[u]所指向的单链表中操作。程序如下: 3、边的搜索、插入和删除 01 2 3
您可能关注的文档
最近下载
- 《膝关节前后交叉韧带损伤》课件.ppt VIP
- 产钳和胎头吸引助产课件.pptx VIP
- 前交叉韧带损伤学习课件.pptx VIP
- GeForce GTX 1070Ti显卡电路图纸参考 PG411 Rev A00.pdf VIP
- 2025-2026学年小学美术五年级上册人美版·北京(主编杨力)(2024)教学设计合集.docx
- 学堂在线 生活英语进阶 章节测试答案.docx VIP
- 一汽-奔腾B50-产品使用说明书-奔腾B50 2014款1.6MT伙伴-CA7165MT4-B50伙伴用户手册.pdf VIP
- 八年级数学下册重难点压轴题突破专项(苏科版)06平行四边形(五大题型,45题)含答案与解析.pdf
- 角膜地形图与圆锥角膜.ppt VIP
- 2025四川内江市总工会招聘工会社会工作者14人笔试备考题库及答案解析.docx VIP
文档评论(0)