该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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语言,克鲁斯卡尔算法发现求有向图出错相关推荐

  1. c语言考试算法,c语言考试常用算法docx.docx

    c语言考试常用算法docx 求1~100的累加和#includevoid main(){inti=1,sum=0;while (i<=100){sum+=i;i++;}printf(" ...

  2. c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言

    FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...

  3. 函数c语言桶排算法,C语言基本排序算法之桶式排序实例

    本文实例讲述了C语言基本排序算法之桶式排序.分享给大家供大家参考,具体如下: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法. 可以 ...

  4. 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)

    Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...

  5. c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)

    1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...

  6. 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)

    算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...

  7. 用c语言编写银行家算法,C语言实现银行家算法

    <C语言实现银行家算法>由会员分享,可在线阅读,更多相关<C语言实现银行家算法(8页珍藏版)>请在人人文库网上搜索. 1.C语言实现银行家算法(源码.运行结果)一. 源码/* ...

  8. 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)

    最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...

  9. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

最新文章

  1. Windows系统安全管理
  2. Windows 10下 Visual Studio Code (VSCode) 和 TypeScript 入门
  3. 深入解析Javascript中this关键字的使用
  4. text-indent无效解决方案
  5. 一些powershell基本使用示例
  6. SpringBoot用Servlet处理请求
  7. unity中单位是米还是厘米_2019-08-22Unity中的单位长度与像素之间的关系
  8. nlp gpt论文_GPT-3:NLP镇的最新动态
  9. supervisor 重启_supervisor_twiddler的使用
  10. 中国移动游戏市场全球占比31.6% 掌趣科技入围竞争力企业前20
  11. python pip更改源
  12. 搏一搏,单车变摩托!华为天才少年耗时四月将自行车强势升级为自动驾驶
  13. DLL文件反编译(附:工具下载链接)
  14. html5添加上下居中,详解HTML5中垂直上下居中的解决方案
  15. 局域网打印机共享怎么设置_一篇文章弄懂局域网打印机共享
  16. 百度竞价该如何选择关键词?
  17. Halcon学习之缺陷检测-凸点检测
  18. ACM2021辽宁省赛:CDEFGILM
  19. 数据仓库中的数据粒度
  20. Redis数据库常用操作命令(查询db、key、value)

热门文章

  1. Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法
  2. Vue相关软件安装及其项目构建
  3. Android音频开发(7):音乐可视化-FFT频谱图
  4. 查看防火墙状态的命令
  5. ubuntu18.04 虚拟机网络配置
  6. EFR32FG25WI-SUNFAN1.1
  7. Zephyr开发指南——优化(优化工具)
  8. AtomicLong 原子操作
  9. 【最全最详细】分布式配置中心 Apollo
  10. 树莓派pi4运行Qortal节点教程