1. 类定义:

    void CreateGraph(ALGraph &G){int i,j,k;char vi,vj;WeightType weight;ArcNode*p,*q;std::cout<<"请输入顶点个数,边数和图的类型:\n";std::cin>>G.vexnum >>G.arcnum >>G.kind ;for(i=0;i<G.vexnum ;i++){std::cout<<"请输入各个顶点:\n";std::cin>>G.vertices[i].data ;G.vertices[i].firstarc=NULL;}for(k=0;k<G.arcnum ;k++){std::cout<<"请输入两顶点和其边的权值:\n";std::cin>>vi>>vj>>weight;i=LocateVex(G,vi);j=LocateVex(G,vj);p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;p->weight=weight;p->nextarc=G.vertices [i].firstarc;G.vertices [i].firstarc=p;if(G.kind == 2){q=(ArcNode*)malloc(sizeof(ArcNode));q->adjvex=i;q->weight=p->weight;q->nextarc=G.vertices [j].firstarc;G.vertices [j].firstarc=q;}                                                                               }                                                                                }
  2. 类的成员函数的实现:

    int MinEdge(WeightType lowcost[],int vexmun){int i,k;WeightType j;k=0;while(lowcost[k]==0){k++;}j=lowcost[k];for(i=k+1;i<vexmun;i++){if(lowcost[i]!=0&&lowcost[i]<j){j=lowcost[i];k=i;}}return k;}void Prim(ALGraph G,int v0, int adjvex[]){WeightType lowcost[MAX_VERTEX_NUM];int i,k;ArcNode*p;for(i=0;i<G.vexnum ;i++){if (i!=v0){lowcost[i]=999;adjvex[i]=v0;}}p=G.vertices [v0].firstarc;while(p){lowcost[G,p->adjvex]=p->weight;p=p->nextarc;}lowcost[v0]=0;for(i=0;i<G.vexnum ;i++){k=MinEdge(lowcost,G.vexnum );if(k>=G.vexnum )return;std::cout<<"("<<k<<","<<adjvex[k]<<"),"<<lowcost[k]<<'\n';lowcost[k]=0;p=G.vertices [k].firstarc;while(p){if(p->weight<lowcost[p->adjvex]){adjvex[p->adjvex]=k;lowcost[p->adjvex]=p->weight;}p=p->nextarc;}}}
  3. 主函数main

    int main(){int adjvex[MAX_VERTEX_NUM];ALGraph G;G.kind =2;CreateGraph(G);Prim(G,0,adjvex);return 0;}
    
  4. 完整代码如下:

    #include "iostream"
    #include "stdlib.h"
    #define MAX_VERTEX_NUM 20
    typedef float WeightType;
    typedef struct ArcNode{int adjvex;WeightType weight;struct ArcNode*nextarc;
    }ArcNode;
    typedef struct VertexNode{char data;ArcNode*firstarc;
    }VertexNode,AdjList[MAX_VERTEX_NUM];
    typedef struct{AdjList vertices;int vexnum,arcnum;int kind;
    }ALGraph;
    int LocateVex(ALGraph G,char v)
    {int i;for(i=0;i<G.vexnum;i++){if(G.vertices [i].data == v)return i;}return -1;} void CreateGraph(ALGraph &G){int i,j,k;char vi,vj;WeightType weight;ArcNode*p,*q;std::cout<<"请输入顶点个数,边数和图的类型:\n";std::cin>>G.vexnum >>G.arcnum >>G.kind ;for(i=0;i<G.vexnum ;i++){std::cout<<"请输入各个顶点:\n";std::cin>>G.vertices[i].data ;G.vertices[i].firstarc=NULL;}for(k=0;k<G.arcnum ;k++){std::cout<<"请输入两顶点和其边的权值:\n";std::cin>>vi>>vj>>weight;i=LocateVex(G,vi);j=LocateVex(G,vj);p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;p->weight=weight;p->nextarc=G.vertices [i].firstarc;G.vertices [i].firstarc=p;if(G.kind == 2){q=(ArcNode*)malloc(sizeof(ArcNode));q->adjvex=i;q->weight=p->weight;q->nextarc=G.vertices [j].firstarc;G.vertices [j].firstarc=q;}                                                                             }                                                                                }int MinEdge(WeightType lowcost[],int vexmun){int i,k;WeightType j;k=0;while(lowcost[k]==0){k++;}j=lowcost[k];for(i=k+1;i<vexmun;i++){if(lowcost[i]!=0&&lowcost[i]<j){j=lowcost[i];k=i;}}return k;}void Prim(ALGraph G,int v0, int adjvex[]){WeightType lowcost[MAX_VERTEX_NUM];int i,k;ArcNode*p;for(i=0;i<G.vexnum ;i++){if (i!=v0){lowcost[i]=999;adjvex[i]=v0;}}p=G.vertices [v0].firstarc;while(p){lowcost[G,p->adjvex]=p->weight;p=p->nextarc;}lowcost[v0]=0;for(i=0;i<G.vexnum ;i++){k=MinEdge(lowcost,G.vexnum );if(k>=G.vexnum )return;std::cout<<"("<<k<<","<<adjvex[k]<<"),"<<lowcost[k]<<'\n';lowcost[k]=0;p=G.vertices [k].firstarc;while(p){if(p->weight<lowcost[p->adjvex]){adjvex[p->adjvex]=k;lowcost[p->adjvex]=p->weight;}p=p->nextarc;}}}int main(){int adjvex[MAX_VERTEX_NUM];ALGraph G;G.kind =2;CreateGraph(G);Prim(G,0,adjvex);return 0;}

数据结构课程设计:管道铺设施工的最佳方案代码相关推荐

  1. 大学数据结构课程设计题目

    数据结构课程设计题目 1.         飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构.具体数据自定) 查询: ...

  2. C++数据结构课程设计

    C++数据结构课程设计 <数据结构>课程设计指导书 一.课程设计的目的 课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际问题结合起来,锻炼学生分析.解决实际问题的能力,提高 ...

  3. C/C++数据结构课程设计安排

    C/C++数据结构课程设计安排 数据结构课程设计安排 课程设计学时:32学时 课程设计目的:综合应用数据结构课程中所学的数据结构:线性表.栈.队列.数组.广义表.树.二叉树.图.查找表中的一种或多种数 ...

  4. “数据结构”课程设计题目

    "数据结构"课程设计题目 1.城市链表 [问题描述] 将若干城市的信息,存入一个带头结点的单链表.结点中的城市信息包括:城市名,城市的位置坐标.要求能够利用城市名和位置坐标进行有关 ...

  5. 图的操作和应用之景区信息管理系统(数据结构课程设计)

    0001:图的操作和应用之景区信息管理系统(C++版数据结构课程设计) 现有一个景区,景区里面有若干个景点,景点之间满足以下条件: (1) 某些景点之间铺设了道路(相邻) (2) 这些道路都是可以双向 ...

  6. java校院导游程序课程设计_数据结构课程设计之校园导游系统

    数据结构课程设计之校园导游系统 放假到现在终于安下心来要搞点学习了,现在对放假前一周的数据结构课设做一个总结,快放假的时候搞数据结构课设,当时满脑子都是期末考试忙着复习,根本没啥心思去做.所以课设一共 ...

  7. 数据结构课程设计——机票售卖系统(C++)

    引言 这学期最后的数据结构课程设计需要我们完成一个简单的小程序,我选择了一个机票售卖系统,实现了一些基本的功能:因为时间给的比较短,又赶在复习周补课,所以并没有什么突出的地方,我就在这里聊聊我的代码实 ...

  8. 数据结构课程设计---最长公共子串

    数据结构课程设计,由用户输入两个字符串串X和Y,再由用户输入一个任意的字符串Z,实现以下功能: ①如果字符串Z是字符串X的子串,则显示Z在X中的位置并记录,如果字符串Z是字符串Y的子串,则显示Z在Y中 ...

  9. 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...

    (数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...

最新文章

  1. 算法------四数相加 II (java 版本)
  2. python常见的数据类型_Python常见数据类型及操作
  3. 赛马问题,毒药问题,倒水问题等智力题
  4. AI:2020年6月22日北京智源大会演讲分享之10:40-11:30 Zoubin教授《Probabilistic Machine Learning and AI》
  5. IEMLRN:基于图像增强的句子语义表示
  6. Caffe源码解析—核函数
  7. Java高并发编程详解系列-Future设计模式
  8. ONVIF协议网络摄像机(IPC)客户端程序开发(8):获取设备基本信息
  9. C语言中字符串的处理方式(一)
  10. Centos下tomcat配置
  11. 企业服务器型号对照表,云手机服务器规格列表
  12. 截图软件 : Snipaste
  13. 优雅发送HTTP请求
  14. Android高德地图导航or语音播报
  15. 怎么把pdf转换成excel转换器免费版
  16. An exceptionCaught() event was fired, and it reached at the tail of the pipeline.
  17. 扫描文档SDK ocr识别技术
  18. 实时控制软件第二周作业 停车场门禁控制系统的状态机设计
  19. Excel?国产开源在线表格Luckysheet走红GitHub
  20. 汇编语言--逻辑指令

热门文章

  1. Android Studio 期末大作业
  2. GraphicsMagick OpenMP 性能比较(icc+iomp vs gcc+gomp)
  3. Android 7.1.2上默认wifi链接之后实际能上网却一直显示不能上网问题
  4. 24-同方鼎欣-info
  5. 六年级毕业计算机考试成绩,小学六年级考试成绩查询(小学六年级成绩名单)...
  6. Java学习之mark标记
  7. 微PE工具箱怎么卸载(win10)
  8. 大道至简——AlphaGo Zero的减法生存
  9. 树形结构(1)(Java语言)——树的基本概念
  10. 欢迎大家走进我的园子 目录整理篇