Kruskal(测试源代码)
1、此程序为c++程序
2、以下代码可实现手动输入,即去掉代码中的/*...*/注释符,并同时去掉赋值代码段
3、源代码
#include<iostream>
using namespace std;
#define MaxInt 32767
#define MVNum 100
typedef struct
{
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum, arcnum;
}AMGraph;
struct
{
char Head, Tail;
int lowcost;
}Edge[MVNum];
int Vexset[MVNum];
void CreateUDN(AMGraph &G);
void MiniSpanTree_Kruskal(AMGraph G);
int LocateVex(AMGraph G, char v);
int main()
{
AMGraph G;
char p = 'y';
while (p == 'y')
{
CreateUDN(G);
MiniSpanTree_Kruskal(G);
cout << "再次执行请输入:y,不执行请输入:n" << endl;
cin >> p;
}
system("pause");
return 0;
}
//生成无向图
void CreateUDN(AMGraph &G)
{
int i, j, k, w;
char v1, v2;
/*cout << "请输入顶点数和边数:";
cin >> G.vexnum >> G.arcnum;
cout << "请输入顶点:";
for (i = 0; i < G.vexnum; i++)
{
cin >> G.vexs[i];
}*/
G.vexnum = 6;
G.arcnum = 10;
G.vexs[0] = 'a';
G.vexs[1] = 'b';
G.vexs[2] = 'c';
G.vexs[3] = 'd';
G.vexs[4] = 'e';
G.vexs[5] = 'f';
//初始化
for (i = 0; i < G.vexnum; i++)
{
for (j = 0; j < G.vexnum; j++)
{
G.arcs[i][j] = MaxInt;
}
}
/*for (k = 0; k < G.arcnum; k++)
{
cout << "请输入边的起点、终点及权值:";
cin >> v1 >> v2 >> w;
Edge[k].Head = v1;
Edge[k].Tail = v2;
Edge[k].lowcost = w;
i = LocateVex(G, v1);
j = LocateVex(G, v2);
G.arcs[i][j] = w;
G.arcs[j][i] = G.arcs[i][j];
}*/
Edge[0].Head = 'a';
Edge[0].Tail = 'b';
Edge[0].lowcost = 6;
G.arcs[0][1] = G.arcs[1][0] = 6;
Edge[1].Head = 'a';
Edge[1].Tail = 'c';
Edge[1].lowcost = 1;
G.arcs[0][2] = G.arcs[2][0] = 1;
Edge[2].Head = 'a';
Edge[2].Tail = 'd';
Edge[2].lowcost = 5;
G.arcs[0][3] = G.arcs[3][0] = 5;
Edge[3].Head = 'b';
Edge[3].Tail = 'c';
Edge[3].lowcost = 5;
G.arcs[1][2] = G.arcs[2][1] = 5;
Edge[4].Head = 'c';
Edge[4].Tail = 'd';
Edge[4].lowcost = 5;
G.arcs[2][3] = G.arcs[3][2] = 6;
Edge[5].Head = 'b';
Edge[5].Tail = 'e';
Edge[5].lowcost = 3;
G.arcs[1][4] = G.arcs[4][1] = 3;
Edge[6].Head = 'c';
Edge[6].Tail = 'e';
Edge[6].lowcost = 6;
G.arcs[2][4] = G.arcs[4][2] = 6;
Edge[7].Head = 'c';
Edge[7].Tail = 'f';
Edge[7].lowcost = 4;
G.arcs[2][5] = G.arcs[5][2] = 4;
Edge[8].Head = 'd';
Edge[8].Tail = 'f';
Edge[8].lowcost = 2;
G.arcs[3][5] = G.arcs[5][3] = 2;
Edge[9].Head = 'e';
Edge[9].Tail = 'f';
Edge[9].lowcost = 6;
G.arcs[4][5] = G.arcs[5][4] = 6;
}
//构造最小生成树
void MiniSpanTree_Kruskal(AMGraph G)
{
int i, j, v1, v2, vs1, vs2;
for (i = 0; i < G.arcnum - 1; i++)
{
for (j = i + 1; j < G.arcnum; j++)
{
if (Edge[i].lowcost >Edge[j].lowcost)
{
Edge[MVNum] = Edge[i];
Edge[i] = Edge[j];
Edge[j] = Edge[MVNum];
}
}
}
for (i = 0; i < G.vexnum; i++)
{
Vexset[i] = i;
}
cout << "最小生成树:" << endl;
for (i = 0; i < G.arcnum; i++)
{
v1 = LocateVex(G, Edge[i].Head);
v2 = LocateVex(G, Edge[i].Tail);
vs1 = Vexset[v1];
vs2 = Vexset[v2];
if (vs1 != vs2)
{
cout << '(' << Edge[i].Head << ',' << Edge[i].Tail << ')' << endl;
for (j = 0; j < G.vexnum; j++)
{
if (Vexset[j] == vs2)
{
Vexset[j] = vs1;
}
}
}
}
}
//确定结点下标
int LocateVex(AMGraph G, char v)
{
int l, i;
for (l = 0, i = 0; i < G.arcnum; i++)
{
if (v == G.vexs[i])
{
l = i;
}
}
return l;
}
Kruskal(测试源代码)的更多相关文章
- 多啦爱梦~多啦A梦CSS3测试源代码
先直接看图片,感觉一下!一直以来,我们都在说浏览器对CSS3支持度这个问题.可是,鉴于知识认识水平问题,又没几个人真正了解CSS3是什么东西,和它在网站显示上的重要性.现在好了,日本某位大神写了个CS ...
- JAVA语言课堂测试源代码及使用截图
1源代码 第一部分 package 开学测试.java;class ScoreInformation {String stunumber;String name;double mathematicss ...
- Dijksktra(测试源代码)
1.此程序为c++程序 2.以下代码可实现手动输入,即去掉代码中的/*...*/注释符,并同时去掉赋值代码段 3.源代码 #include<iostream> using namespac ...
- Huffman编码(测试源代码)
1.此程序为c++程序 2.以下代码可实现手动输入,即去掉代码中的/*...*/注释符,并同时去掉赋值代码段 3.源代码 #include<iostream> using namespac ...
- Java开学测试源代码
package sample; import java.io.IOException;import java.io.Serializable;import java.util.Scanner;impo ...
- Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)
新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...
- Java学习-018-EXCEL 文件写入实例源代码
众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...
- Java学习-013-文本文件读取实例源代码(两种数据返回格式)
此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...
- Java学习-012-文件删除实例及源代码
此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 文件删除源代码如下: /** * @function 文件操作:删除文件.若文件存在且未被占用,则删除文件:若文 ...
随机推荐
- css 分享之background-attachment 属性
微分享才发现的css背景图达到的效果代码属性: background-attachment -- 定义背景图片随滚动轴的移动方式: 值 描述 scroll 默认值.背景图像会随着页面其余部分的滚动而移 ...
- MHA+Atlas+mysql一主一从开启gtid安装配置与实验
各节点架构 (说明:生产环境有两个节点可以组成一套完整集群,我是测试环境,因此对于manager以及atlas和binlog server都是单点,如果生产环境,相应的将manager以及atlas和 ...
- 解析Hibernate中的持久化—ORM(转载)
最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的, ...
- Kotlin 介绍
Kotlin (0:00) 大家好,我是 Michael Pardo,今天我要给大家展示一下 Kotlin 这门语言,同时看看他如何让你在 Android 开发的时候更开心,更有效率. Kotlin ...
- 安装Windows 7
-EndFragment--> 1.安装win7_64位步骤: https://www.douban.com/note/224102684/ 安装Win7系统为硬盘分区的方法 笨小康2012-0 ...
- P53 T2
为方便储户,某银行拟开发计算机储蓄系统.储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名.住址.存款类型.存款日期.利率等信息,并印出存款单给储户:如果是取款,系统计算利息并印 ...
- Windows中一个22年的漏洞
X Windows系统,今天作为世界各地的Linux桌面,已经存在超过20年了,仍然存在Bug.几天前Sysadmins为libXfont库提供了补丁,来对应新发现的已经在代码中存在了22年的特权升 ...
- 通过淘宝IP地址库获取IP位置
地址:http://ip.taobao.com/ 提供的服务包括: 1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 2. 用户可以根据自己 ...
- ssi项目(1)环境搭建
1.环境准备 导包(jdk1.8只支持spring4.0以上的版本) mysql驱动包 c3p0驱动包 mybatis包 spring-core.spring-aop.spring-web.sprin ...
- 在QtCreator 2.1.0 下使用opencv231库加载图片并显示
在.pro中库连接如上图,具体规则正在学习,注意debug下连接*d.lib.release下链接.lib.没有d的. 如果出现imread不可以加载图片,cvloadImage却可以,则是上面说的连 ...