图论及其应用论文(3)

2019-08-31 14:10

printf(\请输入节点%d到节点%d的权:\scanf(\将输入临时存放在temp while(temp==0||temp<-1) //过滤输入数据 { }

if(temp>0) //将符合要求数据赋值给temp x.v[i][j]=temp;

printf(\输入有误,请重新输入:\\n\printf(\请输入%d到%d的权:\scanf(\

else //temp=-1时将权重赋值最大值88

x.v[i][j]=maxvalue; }

else //i>j由于权重是对称的即呈上三角或下三角分布故只

需将i,j对换即可 }

void print(mgraph g,int n) //打印函数 {

int i,j; //定义整型i,j printf(\打印美观需要 for(i=1;i<=n;i++)

printf(\

}

return x; //返回图x

}

printf(\

x.v[i][j]=x.v[j][i];

}

printf(\

for(i=1;i<=n;i++) //双层循环按矩阵方式打印输出各节点间权值 {

printf(\

for(j=1;j<=n;j++) }

printf(\

printf(\

void prim(mgraph g,int k,int n) //核心算法Prim算法实现函数 {

int i,j,min,p; //定义整型变量i,j用于循环 min和p分别用于临时存放最小权值

及其下标

struct //定义型类型数据closedge[]用于临时存放下标和最小边 {

int adjvex; int lowcost;

}closedge[maxnum];

for(i=1;i<=n;i++) //初始化辅助数组

if(i!=k) { }

closedge[k].lowcost=0; //将节点加入生成树中

for(i=1;i

closedge[i].adjvex=k; closedge[i].lowcost=g.v[k][i];

并打印输出

{

p=1; //初始化p

min=maxvalue; //初始化最小权值

for(j=1;j<=n;j++) //循环n次比较最小权值

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

{

min=closedge[j].lowcost; //替换最小权

值为当前节点的权值

}

printf(\打印

p=j; //记录该节点下标

最小的权值的下标和最小边 }

int main() //主函数 {

int n,start; //定义整型n,start表示节点数和开始节点 printf(\请输入节点数(不大于10):\scanf(\

mgraph red; //定义图red

closedge[p].lowcost=0; //将该节点加入生成树中

for(j=1;j<=n;j++) //刷新临时存放空间 }

if((g.v[p][j]) < (closedge[j].lowcost)) { }

closedge[j].lowcost=g.v[p][j]; //赋值最小边 closedge[j].adjvex=p; //赋值最小边对应下标

}

red=input(n); //调用输入函数用户输入数据 print(red,n); //调用输出函数打印输出所输入的数据 printf(\请输入开始节点:\scanf(\

prim(red,start,n); //调用prim函数实现prim算法求最小生成树 return 0;


图论及其应用论文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:资源入股合作协议书范本

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: