第一范文网 - 专业文章范例文档资料分享平台

《数据结构与算法》(清华)典型例题

来源:用户分享 时间:2025/5/19 16:09:55 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

学习必备 欢迎下载

inti,j;

edgenode * p;

for(i=0;i

for (i=0;i

If (g—>arcs[i][j]=0) {

p=(edgenode * )malloc(sizeof (edgenode)); //创建一个结点 p—>adjvex=j

p—>next=ga[i].link; //链人链表 ga[i].1inkt = p;

p=(edgenode * )malloc ( sizeof ( edgenode)); //创建另一个结点 p—>adjvex=i;

p—>next=ga[j].link; //创建一个结点 ga[j].1ink t=p; } } }

[例11-41] 设计一个算法,求无向图的连通分量个数。

解析:由深度优先搜索遍历算法和广度优先搜索遍历算法可知,调用一次深度优先搜 索递归算法或广度优先搜索递归算法只能遍历图中1个连通分量。因此,只需要记录递归 函数被调用的次数,该次数就是图中连通分量的个数。具体算法如下: iht visited[n]; int count(graph * g) {

int i,m=0;

for( i=0;i

for( i=0;i

dfs(g,i);

n++; //每调用一次,计数器加1 }

return n; }

[例11—42] 假设图用邻接矩阵表示,设计一个算法,输出含指定顶点vi的所有简单回路。

解析:用数组p保存走过的路径。定义递归算法path (g,i,k),其功能是确定路径上第k+1个顶点的序号。调用这个算法之前,先将i存入p[0]中。假设p[k]的值为t,检查邻接矩阵的第t行:如果vs是vt相邻的未被访问点,则将vs标记为已被访问,将s存入p[k+1]中,并递归调用path (g,i,k+1)函数。为了实现回溯,在执行path (g,i,k+1)调用后,要

学习必备 欢迎下载

重新将vs标记为未被访问。若Vp[k]到Vi存在一条边,则表示找到了一条路径,输出p数组。具体算法如下: intvisited[n]; int p[n];

void path(graph * g,int i,int k) {

int s;

if(g—>arcs[p[k]][i]==1) //找到一条路径并输出 {

for(s=o;s<=k;s++)

printf(”%d \\n”,p[s]); } else {

s=0; while (s

if(g—>arcs[p[k]][s]==1&& visited[s]==0) {

visited[s]=1; p[k+1]=s;

path(g,i,k+1); visited[s]=0; }

s++; } } }

void disppath(graph * g,int i) {

int k; p[0]=i;

for(k=0;k

(例11—43) 给定n个村庄之间的交通图,若村庄i和村庄j之间有道路,则将顶点i和顶点j用边连接,边上的权叶表示这条道路的长度。现要从这n个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路径最近?试设计一个算法解决此问题,并应用该算法解答图11.23所示实例。

学习必备 欢迎下载

解析:算法基本思想如下: (1)建立图的邻接矩阵。

(2)用Floyd算法计算每一对顶点间的最短路径。

(3)找出从每一个顶点出发到其余各顶点的最短路径中的最长路径。 (4)在这n条最长路径中找出最短的一条,则它的出发点即为所求。 具体算法如下:

inthospital(intn,int C[][],int A[][]) //C为邻接矩阵,A是路径长度矩阵 {

inti,j,k,m,s; for(i=0;i

for(k=0;k

if(A[i][k])+A[k][i]

for(i=1;i

s=0;

for(j=0;js) s=A[i][j];

if(s

m=s; k=i; } }

return k; //返回所求村庄序号 }

实例分析:最初的邻接矩阵为

学习必备 欢迎下载

经过Floyd算法处理之后,求出每一对顶点之间的最短路径,原邻接矩阵变换为

由矩阵可见,每列中的最大值依次为:9,9,6,7,9,9,其中的最小值为6。因此医 应该选村庄v3,使得离医院最远的村庄到医院的路径最短。

搜索更多关于: 《数据结构与算法》(清华)典型例题 的文档
《数据结构与算法》(清华)典型例题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0bwz4914ir1ujtp7zqyg25ui718xfz018yh_10.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top