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(测试源代码)的更多相关文章

  1. 多啦爱梦~多啦A梦CSS3测试源代码

    先直接看图片,感觉一下!一直以来,我们都在说浏览器对CSS3支持度这个问题.可是,鉴于知识认识水平问题,又没几个人真正了解CSS3是什么东西,和它在网站显示上的重要性.现在好了,日本某位大神写了个CS ...

  2. JAVA语言课堂测试源代码及使用截图

    1源代码 第一部分 package 开学测试.java;class ScoreInformation {String stunumber;String name;double mathematicss ...

  3. Dijksktra(测试源代码)

    1.此程序为c++程序 2.以下代码可实现手动输入,即去掉代码中的/*...*/注释符,并同时去掉赋值代码段 3.源代码 #include<iostream> using namespac ...

  4. Huffman编码(测试源代码)

    1.此程序为c++程序 2.以下代码可实现手动输入,即去掉代码中的/*...*/注释符,并同时去掉赋值代码段 3.源代码 #include<iostream> using namespac ...

  5. Java开学测试源代码

    package sample; import java.io.IOException;import java.io.Serializable;import java.util.Scanner;impo ...

  6. Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)

    新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...

  7. Java学习-018-EXCEL 文件写入实例源代码

    众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...

  8. Java学习-013-文本文件读取实例源代码(两种数据返回格式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...

  9. Java学习-012-文件删除实例及源代码

    此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 文件删除源代码如下: /** * @function 文件操作:删除文件.若文件存在且未被占用,则删除文件:若文 ...

随机推荐

  1. android .9图的作用

    参考:http://www.cnblogs.com/lianghui66/archive/2013/01/08/2850581.html .9图的介绍 1.这种格式的图片是Android平台上一种被拉 ...

  2. jsessionid 导致重定向404的问题

    http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletResponse.html#encod ...

  3. Fake chat script for website download

    Are you searching for free fake webchat script then you are at the right place go get download your ...

  4. js控制键盘只能输入数字和退格键,delete键

    function numbText(e){ if(e&& e.stopPropagation){ code= e.which; }else{ code= window.event.ke ...

  5. Dependency Scope

    Dependency Scope <dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值: * compile,缺 ...

  6. ios 重签名

    http://stackoverflow.com/questions/6569120/resigning-an-application-outside-xcode #!/bin/sh TEMPDIR= ...

  7. mybatis3.2.3+spring3 控制台打印sql解决办法

    学习mybatis的时候遇到打印不出sql 的问题,在这里做个总结: 1:首先log4j.properties这样配置: log4j.rootLogger=DEBUG,console,R log4j. ...

  8. 0-1背包问题python解决

    def f(i,j): while i>=0: if i==0 and j>=l[i][0]: return l[i][1] elif i==0 and j<l[i][0]: ret ...

  9. ByteArrayBuilder

    public class ByteArrayBuilder : IDisposable { #region Constants /// <summary> /// True in a by ...

  10. Longest Substring Without Repeating Characters (c#)

    Given a string, find the length of the longest substring without repeating characters. For example, ...