资源简介
C语言,数据结构作业 用普里姆(Prim)算法构造最小生成树
代码片段和文件信息
#include
#define INFINITY INT_MAX
#define MAX_VERTEX_NUM 20
enum GraphKind{DGDNUDGUDN}; //图的类型
typedef struct
{
int weight; //权值
}ArcCellAdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 二维数组
typedef struct
{
char vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnumarcnum;
GraphKind kind;
}Graph;
int LocateVex(Graph Gchar u)
{
for(int i=0;i if(G.vexs[i]==u)
return i;
return -1;
}
void CreateUDN(Graph &G)
{
int ijk;
int weight;
char vavb;
printf(“请输入无向图G的顶点数边数\n“);
scanf(“%d%d“&G.vexnum&G.arcnum);
getchar();
printf(“请输入 %d 个顶点的值:\n“G.vexnum);
for(i=0;i {
printf(“请输入第 %d 个顶点的值:\n“i+1);
scanf(“%c“&G.vexs[i]);
getchar();
}
for(i=0;i for(j=0;j {
if(i!=j)
G.arcs[i][j].weight=1000;
else
G.arcs[i][j].weight=0;
}
printf(“请输入 %d 条边的两个顶点及边权值:\n“G.arcnum);
for(k=0;k {
printf(“请输入第 %d 条边的两个顶点及权值:\n“k+1);
scanf(“%c%c%d“&va&vb&weight);
getchar();
i=LocateVex(Gva);
j=LocateVex(Gvb);
G.arcs[i][j].weight=G.arcs[j][i].weight=weight; // 无向图
}
G.kind=UDN;
}
int FirstAdjVex(Graph Gchar v)
{
int ik;
k=LocateVex(Gv);
for(i=0;i if(G.arcs[k][i].weight!=0)
return i;
return -1;
}
int NextAdjVex(Graph Gchar vchar w)
{
int ik1k2;
k1=LocateVex(Gv);
k2=LocateVex(Gw);
for(i=k2+1;i if(G.arcs[k1][i].weight!=0)
return i;
return -1;
}
void MiniSpanTree_P(Graph G char u)
{
struct
{
char adjvex; // U集中的顶点序号
int lowcost; // 边的权值
} closedge [MAX_VERTEX_NUM];
int ijknlm;
//用普里姆算法从顶点u出发构造网G的最小生成树
k = LocateVex (Gu);
for (j=0;j if (j!=k)
{
closedge[j].adjvex=u;
closedge[j].lowcost=G.arcs[k][j].weight;
}
closedge[k].lowcost = 0; // 初始,U={u}
for (m=1;m {
k=100;
for(i=0;i {
if((closedge[i].lowcost!=0)&&(k>closedge[i].lowcost))
{
k=closedge[i].lowcost;
l=i;
}
}
printf(“%c%c\n“closedge[l].adjvex G.vexs[l]);
closedge[l].lowcost = 0; // 第k顶点并入U集
for (j=0;j if (G.arcs[l][j].weight {
closedge[j].adjvex=G.vexs[l];
closedge[j].lowcost=G.arcs[l][j].weight;
}
}
}
void main()
{
Graph G;
CreateUDN(G);
MiniSpanTree_P(G‘1‘);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 184394 2008-11-30 22:27 Prime\Debug\Prime.exe
文件 353280 2008-11-30 22:27 Prime\Debug\Prime.pdb
文件 184393 2008-12-01 12:31 Prime\Debug\Test.exe
文件 9429 2008-12-01 12:31 Prime\Debug\Test.obj
文件 443392 2008-12-01 12:31 Prime\Debug\Test.pdb
文件 53248 2008-12-01 12:31 Prime\Debug\vc60.pdb
文件 3035 2008-12-01 12:31 Prime\Prime.cpp
文件 4210 2008-11-30 22:26 Prime\Prime.dsp
文件 535 2008-11-30 22:26 Prime\Prime.dsw
文件 25600 2008-11-30 22:36 Prime\Prime.ncb
文件 0 2008-11-30 22:36 Prime\Prime.plg
文件 3377 2008-12-01 12:29 Prime\Test.dsp
文件 533 2008-12-01 12:36 Prime\Test.dsw
文件 41984 2008-12-01 12:36 Prime\Test.ncb
文件 48640 2008-12-01 12:36 Prime\Test.opt
文件 736 2008-12-01 12:31 Prime\Test.plg
目录 0 2009-09-21 22:09 Prime\Debug
目录 0 2009-09-21 22:09 Prime
----------- --------- ---------- ----- ----
1356786 18
- 上一篇:C语言大作业 菜单驱动的学生成绩管理系统
- 下一篇:OpenGL纹理茶壶
相关资源
- 猎豹网校C++ Primer初中高全套无密版
- C++ Primer Plus 6th Edition source code files
- C++primer第五版习题答案及解析
- C++ Primer 5th 习题集 源代码
- C++ primer plus 第六版 全部编程练习答案
- 02_C++PrimerPlus_中文版_第6版_超清.txt
- C++ Prime中文版第五版
- C++ Primer Plus第6版 源代码+练习答案
- C++ Primer Plus第6版_中英文版两个_带书
- C++ Primer第五版中文版--带书签
- C++ Primer Plus(第6版).pdf 中文版高清
- C++ Primer Plus第6版_带书签_高清完整版
- VegaPrime_MFC
- C++ Primer Plus 6th书本源代码
- C++ Primer Plus第6版_中文版_带书签_超清
- C++ Prime Plus中文版第六版
- c++primer_第五版_中文版(完整).rar
- 《C++ Primer Plus第6版中文版》源代码和
- C++ Primer Plus 6th 编程练习答案
- [网盘]C++Primer Plus第6版中文版.pdf
- c++ primer plus 第六版 课后习题答案
- C++ Primer 第五版 中文版 带书签 百度云
- C++ primer plus第五版学习笔记
- c++primer 第五版 源代码
- C++ Primer Plus第6版源码.zip
- C++ Primer 第六版 书上程序及课后习题
- C++primer5
- c++ primer plus第六版配套源代码,很全
- 最小生成树 数据结构
- C++Primer第三版习题答案PDF版
评论
共有 条评论