数据结构-链表.ppt.ppt

  1. 1、本文档共657页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构-链表.ppt

对AOV网进行拓扑排序的步骤是: (1) 在网中选择一个没有前驱的顶点且输出之。 (2) 在网中删去该顶点,并且删去从该顶点发出的全部有向边。 (3) 重复上述两步,直到网中不存在没有前驱的顶点为止。 这样操作结果有两种:一种是网中全部顶点均被输出,说明网中不存在有向回路;另一种是网中顶点未被全部输出,剩余的顶点均有前驱顶点,说明网中存在有向回路。 拓扑排序的方法很多,主要有深度优先有哪些信誉好的足球投注网站排序和广度优先有哪些信誉好的足球投注网站排序两种,下面分别介绍。 1. 广度优先有哪些信誉好的足球投注网站拓扑排序 根据拓扑排序的方法,把入度为0的顶点插入一个队列,按顺序输出。本算法中将顶点的入度记录在邻接表数组的数据域中,即记录在list[v].data中。算法如下: void topsort(vexnode list[]) {arcnode * ptr; int v,w,n1=0; for (v=1;v=n;v++) if (list[v].data==0) enqueue (v); /*利用循环检测入度为0的顶点并入队,即将无前驱的顶点加入队列*/ while((v=dequeue())!=EOF) { printf(%-5d%c,v,(++n1%10==0)? /n:); /*显示无前驱顶点,即删除这些顶点,并计数*/ ptr=list[v].firstarc; /*取上面被删除顶点所相邻顶点的地址,以便删除指向它的边*/ while (ptr!=NULL) { w=ptr-vertex; /*取相邻顶点的序号*/ if (--list[w].data==0) enqueue(w); /*将相邻顶点的入度减1,即删除指向该相邻顶点的一条边。若该顶点的入度减1后,*/ /*入度为0,则成为无前驱顶点,所以入队列以便删除*/ ptr=ptr-next; /*取下一个相邻顶点的地址*/ } }/*循环结构,无前驱的顶点逐个出队 if (n1n)/*如果n1n,则拓扑排序失败*/ printf(not a set of partial order); } 图7.10 拓扑排序 如图7.10的广度优先有哪些信誉好的足球投注网站拓扑排序序列为① ② ④ ③ ⑤ ⑥。 此算法中如果把enqueue(v)改为push(v),把dequeae(v)改为pop(v),则可得另外一种方式的拓扑序列。 2. 深度优先拓扑排序 根据拓扑排序的方法,先用深度优先有哪些信誉好的足球投注网站法向下走,直到无路可走为止。每走一步都伴随着顶点进栈。无路可走时出栈,并同时显示顶点序号。当退回一步后,换向再走,若无向可换,则出栈,即删除无前驱的顶点。算法如下: topodfs(v) int v; int w; list[v].data=1; /*对有哪些信誉好的足球投注网站过的顶点标志改为1,以免重复,并进栈*/ push(v); while (ptr[v]!=NULL) w=ptr[v]-vertex; /*则取出相邻顶序的序号,看相邻顶点是否有哪些信誉好的足球投注网站过*/ if (list[w].data==0) topodfs(w); /*若相邻顶点未被有哪些信誉好的足球投注网站过, 则递归调用拓扑排序函数,去深度优先有哪些信誉好的足球投注网站相邻顶点*/ ptr[v]=ptr[v]-next; /*取另一个相邻顶点*/ printf (%5d,pop ()); /*按相反的拓扑序列显示拓朴序列的顶序*/ 7.6 实习:最短路径的实现 用图表示出全国直辖市和省会城市的铁路网络,量出地图上直辖市和省会城市的距离,并输入计算机,要求能求出从任一城市出发到其他城市的最短路径并输出。 主程序如下: #include stdio.h main() int cost[MAX][MAX],n; /*cost[][]是带权邻接矩阵*/ n=adjmatrix(cost); /*调用子函数建立邻接矩阵*/ prmatrix(cost,n); /*调用子函数显示邻接矩阵*/ dijkstra(cost,n); /*调用子函数求单源最短路径*/ 建立带权邻接矩阵的算法如下: admatrix(matrix) int matrix[][max]; int vexnum,arc

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档