数据结构课程设计:管道铺设施工的最佳方案代码
- 类定义:
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;}}}
主函数main
int main(){int adjvex[MAX_VERTEX_NUM];ALGraph G;G.kind =2;CreateGraph(G);Prim(G,0,adjvex);return 0;}
完整代码如下:
#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 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构.具体数据自定) 查询: ...
- C++数据结构课程设计
C++数据结构课程设计 <数据结构>课程设计指导书 一.课程设计的目的 课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际问题结合起来,锻炼学生分析.解决实际问题的能力,提高 ...
- C/C++数据结构课程设计安排
C/C++数据结构课程设计安排 数据结构课程设计安排 课程设计学时:32学时 课程设计目的:综合应用数据结构课程中所学的数据结构:线性表.栈.队列.数组.广义表.树.二叉树.图.查找表中的一种或多种数 ...
- “数据结构”课程设计题目
"数据结构"课程设计题目 1.城市链表 [问题描述] 将若干城市的信息,存入一个带头结点的单链表.结点中的城市信息包括:城市名,城市的位置坐标.要求能够利用城市名和位置坐标进行有关 ...
- 图的操作和应用之景区信息管理系统(数据结构课程设计)
0001:图的操作和应用之景区信息管理系统(C++版数据结构课程设计) 现有一个景区,景区里面有若干个景点,景点之间满足以下条件: (1) 某些景点之间铺设了道路(相邻) (2) 这些道路都是可以双向 ...
- java校院导游程序课程设计_数据结构课程设计之校园导游系统
数据结构课程设计之校园导游系统 放假到现在终于安下心来要搞点学习了,现在对放假前一周的数据结构课设做一个总结,快放假的时候搞数据结构课设,当时满脑子都是期末考试忙着复习,根本没啥心思去做.所以课设一共 ...
- 数据结构课程设计——机票售卖系统(C++)
引言 这学期最后的数据结构课程设计需要我们完成一个简单的小程序,我选择了一个机票售卖系统,实现了一些基本的功能:因为时间给的比较短,又赶在复习周补课,所以并没有什么突出的地方,我就在这里聊聊我的代码实 ...
- 数据结构课程设计---最长公共子串
数据结构课程设计,由用户输入两个字符串串X和Y,再由用户输入一个任意的字符串Z,实现以下功能: ①如果字符串Z是字符串X的子串,则显示Z在X中的位置并记录,如果字符串Z是字符串Y的子串,则显示Z在Y中 ...
- 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...
(数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...
最新文章
- 算法------四数相加 II (java 版本)
- python常见的数据类型_Python常见数据类型及操作
- 赛马问题,毒药问题,倒水问题等智力题
- AI:2020年6月22日北京智源大会演讲分享之10:40-11:30 Zoubin教授《Probabilistic Machine Learning and AI》
- IEMLRN:基于图像增强的句子语义表示
- Caffe源码解析—核函数
- Java高并发编程详解系列-Future设计模式
- ONVIF协议网络摄像机(IPC)客户端程序开发(8):获取设备基本信息
- C语言中字符串的处理方式(一)
- Centos下tomcat配置
- 企业服务器型号对照表,云手机服务器规格列表
- 截图软件 : Snipaste
- 优雅发送HTTP请求
- Android高德地图导航or语音播报
- 怎么把pdf转换成excel转换器免费版
- An exceptionCaught() event was fired, and it reached at the tail of the pipeline.
- 扫描文档SDK ocr识别技术
- 实时控制软件第二周作业 停车场门禁控制系统的状态机设计
- Excel?国产开源在线表格Luckysheet走红GitHub
- 汇编语言--逻辑指令
热门文章
- Android Studio 期末大作业
- GraphicsMagick OpenMP 性能比较(icc+iomp vs gcc+gomp)
- Android 7.1.2上默认wifi链接之后实际能上网却一直显示不能上网问题
- 24-同方鼎欣-info
- 六年级毕业计算机考试成绩,小学六年级考试成绩查询(小学六年级成绩名单)...
- Java学习之mark标记
- 微PE工具箱怎么卸载(win10)
- 大道至简——AlphaGo Zero的减法生存
- 树形结构(1)(Java语言)——树的基本概念
- 欢迎大家走进我的园子 目录整理篇