数据结构-实验报告最小生成树

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(封面)

学生实验报告

学院:国际经贸学院

课程名称:数据结构

专业班级: 09电子商务

姓名:

学号:

学生实验报告

(经管类专业用)

一、实验目的及要求:

1、目的

学习普里姆算法,并练习编写相关程序。

2、内容及要求

学习并掌握有关生成树的相关知识,了解构造最小生成树的三条基本准则:

1)必须只使用此流通图中的边来构造最小生成树;

2)必须使用且仅使用(n-1)条边来连接图中的n个顶点;

3)不能使用产生回路的边;

二、仪器用具:

三、实验方法与步骤:

1)编写一个程序,对于下面所示的无向带权图G,采用普里姆算法输出从顶点0出发的最小生成树。

无向带权图G

2)编写MAIN函数;

3)运行并判断结果;

4)整理并完成实验报告;

5)总结实验,提出建议。

四、实验结果与数据处理:⑴实验代码

#include

#include "graph.h"

#define INF 32767

extern void DispMat(MGraph); void prim(MGraph g,int v) {

int lowcost[MAXV],min,n=g.vexnum;

int closest[MAXV],i,j,k;

for (i=0;i

{

lowcost[i]=g.edges[v][i];

closest[i]=v;

}

for (i=1;i

{

min=INF;

for (j=0;j

if (lowcost[j]!=0 && lowcost[j]

{

min=lowcost[j];k=j;

}

printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);

lowcost[k]=0;

for (j=0;j

if (g.edges[k][j]!=0 && g.edges[k][j]

lowcost[j]=g.edges[k][j];closest[j]=k;

}

}

}

void main()

{

int i,j,u=3;

MGraph g;

int A[MAXV][11];

g.vexnum=6;g.arcnum=10;

for (i=0;i

for (j=0;j

A[i][j]=INF;

A[0][1]=5;A[0][2]=8;A[0][3]=7;A[0][5]=3;

A[1][2]=4;

A[2][3]=5;A[2][5]=9;

A[3][4]=5;

A[4][5]=1;

for (i=0;i

for (j=0;j

A[j][i]=A[i][j];

for (i=0;i

for (j=0;j

g.edges[i][j]=A[i][j];

printf("\n");

printf("图G的邻接矩阵:\n");

DispMat(g);

printf("\n");

printf("普里姆算法求解结果:\n");

prim(g,0);

printf("\n");

}

⑵运行结果

五、讨论与结论

六、指导教师评语及成绩:

评语:指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值

成绩:指导教师签名:

批阅日期:

相关文档
最新文档