克鲁斯卡尔算法c语言,克鲁斯卡尔算法发现求有向图出错
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void gdyx(gre*g)
{
int i,a[20];
for(i=0;iv;i++)
a[i]=0;
for(i=0;iv;i++)
if(!a[i])
gdbl(g,a,a[i]);
} void purim(gre*g)
{
int i,j,k,min,a[10],b[10];
for(i=0;iv;i++)
{
b[i]=g->sz[0][i];
a[i]=1;
}
a[0]=0;
for(i=1;iv;i++)
{
min=max;
k=0;
for(j=0;jv;j++)
if(b[j]
{
min=b[j];
k=j;
}
printf(" %c->%c(%d) ",g->vd[a[k]-1],g->vd[k],min);
a[k]=0;
for(j=0;jv;j++)
if(g->sz[k][j]
{
b[j]=g->sz[k][j];
a[j]=k+1;
}
}
} void csh(gre*g,int*a)
{
int i;
for(i=0;ih;i++)
a[i]=i;
} int cz(gre*g,int x,int*a)
{
if(a[x]!=x)
x=cz(g,a[x],a);
return x;
} void hb(int x,int y,int*a)
{
a[x]=y;
} int bcj(gre*g,int i,int j)
{
int n=0,k,a[30]={0};
csh(g,a);
i=cz(g,i,a);
j=cz(g,j,a);
if(i==j)
return 1;
else
{
hb(i,j,a);
return 0;
}
} void krusker(gre*g)
{
int i,j,count=1,k=0,n,a[10][10],b[10],c[10];
for(i=0;iv;i++)
for(j=0;jv;j++)
if(g->sz[i][j]!=max)
{
a[i][j]=g->sz[i][j];
b[k]=g->sz[i][j];
k++;
}
for(i=0;i
for(j=i+1;j
if(b[i]>b[j])
{
n=b[i];
b[i]=b[j];
b[j]=n;
}
k=0;
for(i=0;ih&&countv;i++)
{
for(j=0;jv&&countv;j++)
{
for(n=0;nv&&countv;n++)
if(b[k]==a[j][n])
{
if(!bcj(g,j,n))
{
printf(" %c->%c(%d) ",g->vd[j],g->vd[n],g->sz[j][n]);
count++;
}
break;
}
if(b[k]==a[j][n])
{
a[j][n]=max;
k++;
break;
}
}
}
} void djstl(gre*g)
{
int i,j,k,dis,min,a[20],b[20];
for(i=0;iv;i++)
{
b[i]=g->sz[0][i];
a[i]=0;
}
a[0]=1;
for(i=0;iv;i++)
{
min=max;
for(j=0;jv;j++)
if(!a[j]&&b[j]
{
min=b[j];
k=j;
}
a[k]=1;
for(j=0;jv;j++)
if(!a[j])
{
dis=b[k]+g->sz[k][j];
b[j]=(b[j]
}
}
for(i=0;iv;i++)
printf(" ->%c(%d)",g->vd[i],b[i]);
printf("\n");
} void zylx(gre*g)
{
sd q;
int i,j,k,a[10];
cld(&q);
for(i=0;iv;i++)
a[i]=0;
printf("%c ",g->vd[0]);
a[0]=1;
rrd(&q,0);
while(!ddk(&q))
{
k=ccd(&q);
for(i=0;iv;i++)
if(!a[i]&&g->sz[k][i]!=max)
{
printf("->%c",g->vd[i]);
rrd(&q,i);
a[i]=1;
}
}
printf("\n");
while(q.dw->pre)
{
printf("%c ",g->vd[q.dw->data]);
q.dw=q.dw->pre;
}
printf("\n");
} main()
{
char ch1,ch2;
int i,j;
gre g;
ch1='y';
printf("请选择下列选项!!");
while(ch1=='y'||ch1=='Y')
{
printf("\nA----创建更新图!!\n");
printf("B----图的存储状态!!\n");
printf("C----深度优先遍历!!\n");
printf("D----广度优先遍历!!\n");
printf("E----普里姆算法最短路径!!\n");
printf("F----科鲁斯卡尔算法最短路径!!\n");
printf("G----迪杰斯特拉最短路径!!\n");
printf("H----最优路线!!\n");
printf("I----退出!!\n");
scanf(" %c",&ch2);
switch(ch2)
{
case'A':
case'a':cjgxt(&g);
printf("图创建或更新完成!!\n\n");
break;
case'B':printf("现在存储状态如下:\n");
case'b':tczt(&g);break;
case'C':printf("深度优先遍历!!\n");
case'c':sdyx(&g);break;
case'D':printf("广度优先遍历!!\n");
case'd':gdyx(&g);break;
case'E':printf("普里姆算法最短路径!!\n");
case'e':purim(&g);break;
case'F':printf("科鲁斯卡尔算法最短路径!!\n");
case'f':krusker(&g);break;
case'G':printf("迪杰斯特拉最短路径!!\n");
case'g':djstl(&g);break;
case'H':printf("最优路线!!\n");
case'h':zylx(&g);break;
case'I':printf("退出!!\n");
case'i':exit(1);
default:printf("请选择正确的选项!!\n");
}
printf("结束请按N,继续请按Y\n");
scanf(" %c",&ch1);
}
}
克鲁斯卡尔算法c语言,克鲁斯卡尔算法发现求有向图出错相关推荐
- c语言考试算法,c语言考试常用算法docx.docx
c语言考试常用算法docx 求1~100的累加和#includevoid main(){inti=1,sum=0;while (i<=100){sum+=i;i++;}printf(" ...
- c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言
FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...
- 函数c语言桶排算法,C语言基本排序算法之桶式排序实例
本文实例讲述了C语言基本排序算法之桶式排序.分享给大家供大家参考,具体如下: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法. 可以 ...
- 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)
Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...
- c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)
1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...
- 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)
算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...
- 用c语言编写银行家算法,C语言实现银行家算法
<C语言实现银行家算法>由会员分享,可在线阅读,更多相关<C语言实现银行家算法(8页珍藏版)>请在人人文库网上搜索. 1.C语言实现银行家算法(源码.运行结果)一. 源码/* ...
- 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)
最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...
- shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)
Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...
最新文章
- Windows系统安全管理
- Windows 10下 Visual Studio Code (VSCode) 和 TypeScript 入门
- 深入解析Javascript中this关键字的使用
- text-indent无效解决方案
- 一些powershell基本使用示例
- SpringBoot用Servlet处理请求
- unity中单位是米还是厘米_2019-08-22Unity中的单位长度与像素之间的关系
- nlp gpt论文_GPT-3:NLP镇的最新动态
- supervisor 重启_supervisor_twiddler的使用
- 中国移动游戏市场全球占比31.6% 掌趣科技入围竞争力企业前20
- python pip更改源
- 搏一搏,单车变摩托!华为天才少年耗时四月将自行车强势升级为自动驾驶
- DLL文件反编译(附:工具下载链接)
- html5添加上下居中,详解HTML5中垂直上下居中的解决方案
- 局域网打印机共享怎么设置_一篇文章弄懂局域网打印机共享
- 百度竞价该如何选择关键词?
- Halcon学习之缺陷检测-凸点检测
- ACM2021辽宁省赛:CDEFGILM
- 数据仓库中的数据粒度
- Redis数据库常用操作命令(查询db、key、value)