文档库 最新最全的文档下载
当前位置:文档库 › 编写一个构造可以使n个城市连接的最小生成树()的程序 实习报告

编写一个构造可以使n个城市连接的最小生成树()的程序 实习报告

编写一个构造可以使n个城市连接的最小生成树()的程序 实习报告
编写一个构造可以使n个城市连接的最小生成树()的程序 实习报告

编写一个构造可以使n个城市连接的最小生成树(**)的程序

1.实验题目

编写一个构造可以使n个城市连接的最小生成树(**)的程序

2.需求分析

本程序用C编写,给定一个地区的n个城市间的距离网,用Prim算法建立最小生成树,并计算得到的最小生成树的代价。

(1) 输入的形式和输入值的范围:由键盘输入元素时需要输入到指定位置和元素的值。在所有输入中,元素的值都是非负整数,而且小于888888。

(2) 输出的形式:在每一个输入中都会在屏幕显示出来,以验证其准确性,通过Prim算法查找后输出最小路径及最小路径权值。

(3) 程序所能达到的功能:通过输入建立n个城市及其城市相互间的距离,选定某一城市为起点后,通过Prim算法找出最小路径和最小路径权值。

(4) 测试数据:

A.输入定顶数和边数7和10 ,得到城市的个数和城市间有几条路径

B.输入顶点字符信息:0 1 2 3 4 5 6 ,得到城市的名称

C.输入对应的顶点序号以及权值

0 6 9

1 0 20

1 2 10

1 3 30

2 4 5

4 3 12

4 6 15

5 4 8

5 6 10

6 2 18

得到各城市间的距离

D.输入源点:2,最小生成树包括城市间的道路

3.概要设计

(1)为了实现上述程序功能,需要定义一些抽象数据类型:

CreatGraph(){

数据对象:{&(G->n) ,&(G->e)}定义顶点数和边数

G->arcs[i][j] = INFINITY ;初始化数据888888为无穷大数据关系:{ n,e,vexs[i],arcs[i][j] ∈G,in,jn}

基本操作:scanf("%d%d" ,&(G->n) ,&(G->e)) ; 输入顶点数和边数

scanf("%d" ,&(G->vexs[i])) ; 输入顶点信息,建立顶点表

scanf("%d%d%d" ,&i ,&j ,&w) ; 输入e条边顶点及权值,建立邻接矩阵

操作结果:建立G的邻接矩阵存储,在屏幕显示结果

MiniSpanTree_PRIM()

初始条件:邻接矩阵G已经存在

基本操作;键入源点U,执行prim算法

操作结果:计算出最小生成树的路径和权值,在屏幕显示结果

(2)本程序包含3个函数:

①主函数main()

②建立邻接矩阵函数CreatGraph()

③最小生成树prim算法函数MiniSpanTree_PRIM()

各函数间关系

CreatGraph

main

MiniSpanTree_PRIM

4.详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。

(1) 结点类型和指针类型

①typedef struct {

int vexs[MaxVextexNum];

int arcs[MaxVextexNum][MaxVextexNum] ;

int n ,e ;

} MGraph ;

②typedef struct{

int adjvertex ;

int lowcost ;

}ClosEdge[MaxVextexNum] ;

(2)建立邻接矩阵

void CreatGraph(MGraph *G)

{

int i, j, k, w ;

printf("请输入顶点数和边数n e:") ;

scanf("%d%d" ,&(G->n) ,&(G->e)) ;/* 输入顶点数和边数*/

printf("\n请输顶点字符信息(共%d个):", G->n) ;

for (i=0 ;in ;i++)

{

scanf("%d" ,&(G->vexs[i])) ;

for(j=0 ;jn ;j++)

printf("%8d", G->arcs[i][j]) ;

printf("\n") ;

}

}

(3) 用prim算法找出最小树路径及权值

void MiniSpanTree_PRIM(MGraph G,int u,ClosEdge closedge)

{ int i ,j ,w ,k ,cost = 0 ;

for(i=0 ;i

if(i != u)

{

closedge[i].adjvertex = u ;

closedge[i].lowcost = G.arcs[u][i] ;

for(i=0; i

if (i != u)

{

printf("%d->%d,%d\n",i ,closedge[i].adjvertex ,G.arcs[i][closedge[i].adjvertex]) ;

cost=cost+G.arcs[i][closedge[i].adjvertex] ;

}

printf("\n最小生成树的代价为:%d\n\n", cost) ;

}

(3) 主程序

main()

{

5.调试分析

这题目时我还不太了解prim算法,就模糊地记得是一种求解最小生成树的算法,后来通过复习课本和上网查阅资料才加深了对它的理解,prim 算法是贪心算法中比较典型的一个算法。在求最小生成树中总能得到最优解。通过这次实验让我明白到:学习不仅需要学习精通理论知识,还要经常参与实践.

6.使用说明

程序程序名为构造n个城市连接的最小生成树.exe,运行环境为VC++6.0。程序执行后显示

(1)请输入顶点数和边数n e:

输入数据n和e后显示:

(2)请输入顶点字符信息(共n个)

输入n个数据后显示:

(3)请输入边(Ui,Uj)对应的顶点序号(共e对),以及权值:

输入10对顶点及权值后显示:

此邻接矩阵为:

…………………………

最小生成树的代价为:X

程序运行结束。

7.测试结果

测试1:

数据结构-第六章-图-练习题及答案详细解析(精华版)

图 1. 填空题 ⑴ 设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵ 任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶ 图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度

⑺ 图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼ 如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽ 在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk 【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。 2. 选择题 ⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的()倍。 A 1/2 B 1 C 2 D 4 【解答】C 【分析】设无向图中含有n个顶点e条边,则。

最小生成树问题

榆林学院12届课程设计 《最小生成树问题》 课程设计说明书 学生姓名:赵佳 学号: 1412210112 院系:信息工程学院 专业:计算机科学与技术 班级:计14本1 指导教师: 答辩时间:年月日 最小生成树问题 一、问题陈述 最小生成树问题 设计要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方

法。存储结构采用多种。求解算法多种。 二、需求分析 1.在n个城市之间建设网络,只需保证连通即可。 2.求城市之间最经济的架设方法。 3.采用多种存储结构,求解算法也采用多种。 三、概要设计 1、功能模块图 2、功能描述

(1) CreateUDG() 创建一个图:通过给用户信息提示,让用户将城市信息及城市之间的联系关系和连接权值写入程序,并根据写入的数据创建成一个图。 (2) Switch() 功能选择:给用户提示信息,让用户选择相应功能。 (3) Adjacency_Matrix() 建立邻接矩阵:将用户输入的数据整理成邻接矩阵并显现在屏幕上。 (4) Adjacency_List() 建立邻接表:将用户输入的数据整理成临接表并显现在屏幕上。 (5) MiniSpanTree_KRSL() kruskal算法:利用kruskal算法求出图的最小生成树,即:城市之间最经济的连接方案。 (6) MiniSpanTree_PRIM() PRIM算法:利用PRIM算法求出图的最小生成树,即:城市之间最经济的连接方案。 四、详细设计

本次课程设计采用两种存储结构以及两种求解算法。 1、两种存储结构的存储定义如下: typedef struct Arcell { double adj; }Arcell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { char vexs[MAX_VERTEX_NUM]; //节点数组 AdjMatrix arcs; //邻接矩阵 int vexnum,arcnum; //图的当前节点数和弧数 }MGraph; typedef struct Pnode //用于普利姆算法 { char adjvex; //节点 double lowcost; //权值 }Pnode,Closedge[MAX_VERTEX_NUM];//记录顶点集U到V-U的代价最小的边的

汽车构造实习报告

汽车构造实习报告 学院: 专业年级: 学号: 姓名:

目录 实习安排表-----------------------------------------------------------------01 实验一发动机拆装--------------------------------------------------------02 实验二汽油机、柴油机供给系-----------------------------------------09 实验三发动机点火系及起动系-----------------------------------------18 实验四汽车传动系的总体构造离合器变速器及分动器--------22 实验五万向传动装置与驱动桥车桥悬架及转向系--------------28 实验六汽车制动系--------------------------------------------------------36

实验一发动机拆装 一、实验目的 1.掌握往复活塞式发动机曲柄连杆机构、配气机构、冷却系统、润滑系统的组 成和结构; 2.初步掌握发动机的分解、装复及调整方法。 二、实验要求 1.讲解四行程发动机工作原理,两大机构五大系功用、结构认识。 三、使用的工具 1.发动机一台 2.各种常用工具、量具、专用工具及工作台架。 四、实习内容 实习所使用的发动机类型为:四缸直列水冷式发动机。 1.拆装注意事项 1)重要的螺栓、螺母松开或拧紧应按一定的顺序同时进行,不能单独松(或紧), 装配时应按规定的扭力进行,如在拧紧汽缸盖、主轴承盖、连杆盖等时;2)一些配合件在拆卸时应做记号(如已有记号的应认定)以便按原样装复以 保证原样配合;如:连杆和连杆盖、主轴承盖、气门、气门座及导管、活塞、活塞环、活塞销与汽缸、曲轴主轴瓦、连杆瓦、正时齿轮等。 3)对具有平衡要求的高速旋转体,如飞轮、曲轴、平衡重、离合器压板、离 合器盖等,如相对位置装错将破坏原来的静平衡和动平衡 4)装活塞环时,镀铬环应为第一环;锥形环的小端向上;扭曲环的内缺口向上,

最小生成树数据结构课程设计报告

河北科技大学 课程设计报告 学生姓名:白云学号:Z110702301 专业班级:计算机113班 课程名称:数据结构课程设计 学年学期: 2 01 3—2 014学年第2学期指导教师:郑广 2014年6月

课程设计成绩评定表

目录 一、需求分析说明 (1) 1.1最小生成树总体功能要求 (1) 1.2基本功能 (1) 1.3 模块分析 (1) 二、概要设计说明 (1) 2.1设计思路 (1) 2.2模块调用图 (2) 2.3数据结构设计 (2) 2.3.1.抽象数据类型 (2) 2.3.2方法描述 (2) 三、详细设计说明 (3) 3.1主函数模块 (3) 3.2邻接表输出子模块 (3) 3.3邻接矩阵输出子模块 (3) 3.4创建邻接矩阵子模块 (3) 3.5创建邻接表子模块 (3) 3.6 Prim子模块 (3) 3.7 Kruscal子模块 (4) 四、调试分析 (4) 4.1实际完成情况说明 (4) 4.2 出现的问题及解决方案 (4) 4.3程序中可以改进的地方 (4) 六、课程设计总结 (7) 七、测试数据 (7) 八、参考书目 (7)

一、需求分析说明 1.1最小生成树总体功能要求 在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。 1.2基本功能 在n个城市之间建设网络,只需要架设n-1条线路,建立最小生成树即可实现最经济的架设方法。 程序可利用克鲁斯卡尔算法或prim算法生成最小生成树。 1.3 模块分析 主模块:用于生成界面和调用各个子模块。 Kruscal模块:以kruscal算法实现最小生成树。 Prim模块:以prim算法实现最小生成树。 邻接表模块:用邻接表方式存储图。 邻接表输出模块:输出邻接表。 邻接矩阵模块:用邻接矩阵方式存储图。 邻接矩阵模块:输出邻接矩阵。 二、概要设计说明 2.1设计思路 问题的解决分别采用普利姆算法以及克鲁斯卡尔算法。 1) 普利姆算法就是先选择根,把它放入一个集合U中,剩余的顶点放在集合V中。然后选择该顶点与V中顶点之间权值最小的一条边,以此类推,如果达到最后一个则返回上一个顶点。 2) 克鲁斯卡尔算法就是写出所有的顶点,选择权最小的边,然后写出第二小的,以此类推,最终要有一个判断是否生成环,不生成则得到克鲁斯卡尔的最小生成树。

最小生成树问题

软件综合课程设计 最小生成树问题 学生成绩管理 二〇一四年六月 最小生成树问题 一、问题陈述 最小生成树问题 设计要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。 二、需求分析

1.在n个城市之间建设网络,只需保证连通即可。 2.求城市之间最经济的架设方法。 3.采用多种存储结构,求解算法也采用多种。 三、概要设计 1、功能模块图

2、功能描述 (1) CreateUDG() 创建一个图:通过给用户信息提示,让用户将城市信息及城市之间的联系关系和连接权值写入程序,并根据写入的数据创建成一个图。 (2) Switch() 功能选择:给用户提示信息,让用户选择相应功能。 (3) Adjacency_Matrix() 建立邻接矩阵:将用户输入的数据整理成邻接矩阵并显现在屏幕上。 (4) Adjacency_List() 建立邻接表:将用户输入的数据整理成临接表并显现在屏幕上。 (5) MiniSpanTree_KRSL() kruskal算法:利用kruskal算法求出图的最小生成树,即:城市之间最经济的连接方案。 (6) MiniSpanTree_PRIM() PRIM算法:利用PRIM算法求出图的最小生成树,即:城市之间最经济的连接方案。

四、详细设计 本次课程设计采用两种存储结构以及两种求解算法。 1、两种存储结构的存储定义如下: typedef struct Arcell { double adj; }Arcell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { char vexs[MAX_VERTEX_NUM]; //节点数组 AdjMatrix arcs; //邻接矩阵 int vexnum,arcnum; //图的当前节点数和弧数 }MGraph; typedef struct Pnode //用于普利姆算法 { char adjvex; //节点 double lowcost; //权值 }Pnode,Closedge[MAX_VERTEX_NUM];//记录顶点集U到V-U的代价最小的边的辅助数组定义 typedef struct Knode//用于克鲁斯卡尔算法中存储一条边及其对应的2个节点 { char ch1; //节点1 char ch2; //节点2 double value;//权值 }Knode,Dgevalue[MAX_VERTEX_NUM]; 2、求解算法采用Prim算法和Kruskal算法。 (1)普里姆算法(Prim)算法 普里姆算法(Prim)算法是一种构造性算法,生成最小生成树的步骤如下:初始化U={v}。以v到其他顶点的所有边为候选边。 重复一下步骤(n-1)次,使得其他(n-1)个顶点被加入到U中。 ○1从候选边中挑选权值最小的边加入TE,设该边在V—U中的顶点是vk,将顶点vk加入到U中; ○2考察当前V—U中的所有顶点vj ,修改候选边:若(vk,vj)的权值小于原来和vj关联的候选边,则用(vk,vj)取代后者作为候选边。

以邻接矩阵存储的图类型构造n个城市连接的最小生成树

以邻接矩阵存储的图类型构造n个城市连接的最小生成树代码: #include #include #define MaxVextexNum 30 /* 最大顶点数为30 */ #define INFINITY 32767 /* 定义一个权值的最大值*/ typedef struct{ int vexs[MaxVextexNum] ; /* 顶点表*/ int arcs[MaxVextexNum][MaxVextexNum] ; /* 邻接矩阵,即边表*/ int n ,e ; /* 顶点数和边数*/ }MGraph ; /* MGragh是以邻接矩阵存储的图类型*/ typedef struct{ int adjvertex ; /* 某顶点与已构造好的部分生成树的顶点之间权值最小的顶点*/ int lowcost ; /* 某顶点与已构造好的部分生成树的顶点之间的最小权值*/ }ClosEdge[MaxVextexNum] ; /* 用prim算法求最小生成树时的辅助数组*/ void CreatGraph(MGraph *G) /* 建立有向图G的邻接矩阵存储*/ { int i, j, k, w ; printf("请输入顶点数和边数n e:") ; scanf("%d%d" ,&(G->n) ,&(G->e)) ;/* 输入顶点数和边数*/ printf("\n请输顶点字符信息(共%d个):", G->n) ; for (i=0 ;in ;i++) {

scanf("%d" ,&(G->vexs[i])) ; /* 输入顶点信息,建立顶点表*/ } for (i=0 ;in ;i++) for (j=0 ;jn ;j++) { if(i == j) { G->arcs[i][j] = 0 ; } else G->arcs[i][j] = INFINITY ; }/* 初始化邻接矩阵32767为无穷大*/ printf("\n请输入边对应的顶点序号(共%d对),以及权值:\n",G->e) ; for (k=0 ;ke ;k++) { scanf("%d%d%d" ,&i ,&j ,&w) ; /*输入e条边,建立邻接矩阵*/ G->arcs[i][j] = w ;/* 若加入G->edges[j][i]=1,则为无向图的邻接矩阵*/ G->arcs[j][i] = w ; } printf("此连邻接矩阵为(32767为无穷大):\n") ; for(i=0 ;in ;i++) { for(j=0 ;jn ;j++) printf("%8d", G->arcs[i][j]) ; printf("\n") ; } } void MiniSpanTree_PRIM(MGraph G,int u,ClosEdge closedge)

汽车构造实习报告(心得总结)

汽车构造实习报告 学院: 专业年级: 学号: 姓名: 目录 实习安排表——--———-————-—--——--—-—--—---———-———-—-——---——-——-—-—---—-----—-—01 实验一发动机拆装——-——--—-------—-—-———--——-——————----—-———-—---—-—-——-—-02 实验二汽油机、柴油机供给系-—--———--——-——-—--—-—-—-—--—------——-—-——09 实验三发动机点火系及起动系-—-——-——————-------———---—-—--—-——-—---—-18 实验四汽车传动系得总体构造离合器变速器及分动器——---———22 实验五万向传动装置与驱动桥车桥悬架及转向系-—-———-——--———28 实验六汽车制动系—————--—--—----—-------—-—--—-------——————--——-—-—---———36

实验一发动机拆装 一、实验目得 1.掌握往复活塞式发动机曲柄连杆机构、配气机构、冷却系统、润滑系统得组 成与结构; 2.初步掌握发动机得分解、装复及调整方法。 二、实验要求 1.讲解四行程发动机工作原理,两大机构五大系功用、结构认识。 三、使用得工具 1.发动机一台 2.各种常用工具、量具、专用工具及工作台架。 四、实习内容 实习所使用得发动机类型为:四缸直列水冷式发动机. 1.拆装注意事项 1)重要得螺栓、螺母松开或拧紧应按一定得顺序同时进行,不能单独松(或紧), 装配时应按规定得扭力进行,如在拧紧汽缸盖、主轴承盖、连杆盖等时; 2)一些配合件在拆卸时应做记号(如已有记号得应认定)以便按原样装复以 保证原样配合;如:连杆与连杆盖、主轴承盖、气门、气门座及导管、活塞、活塞环、活塞销与汽缸、曲轴主轴瓦、连杆瓦、正时齿轮等。 3)对具有平衡要求得高速旋转体,如飞轮、曲轴、平衡重、离合器压板、离 合器盖等,如相对位置装错将破坏原来得静平衡与动平衡 4)装活塞环时,镀铬环应为第一环;锥形环得小端向上;扭曲环得内缺口向上, 外缺口向下;活塞环得开口应采用“迷宫式”布置;

最小生成树实验报告

数据结构课程设计报告题目:最小生成树问题 院(系):计算机工程学院 学生姓名: 班级:学号: 起迄日期: 指导教师: 2011—2012年度第 2 学期 一、需求分析 1.问题描述:

在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。 2.基本功能 在n个城市之间建设网络,只需要架设n-1条线路,建立最小生成树即可实现最经济的架设方法。 程序可利用克鲁斯卡尔算法或prim算法生成最小生成树。 3.输入输出 以文本形式输出最小生成树,同时输出它们的权值。通过人机对话方式即用户通过自行选择命令来输入数据和生成相应的数据结果。 二、概要设计 1.设计思路: 因为是最小生成树问题,所以采用了课本上介绍过的克鲁斯卡尔算法和 prim算法两种方法来生成最小生成树。根据要求,需采用多种存储结构,所以我选择采用了邻接表和邻接矩阵两种存储结构。 2.数据结构设计: 图状结构: ADT Graph{ 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。 数据关系R:R={VR} VR={|v,w∈V且P(v,w),表示从v到w的弧, 谓词P(v,w)定义了弧的意义或信息} 基本操作: CreateGraph( &G, V, VR ) 初始条件:V是图的顶点集,VR是图中弧的集合。 操作结果:按V和VR的定义构造图G。 DestroyGraph( &G )

初始条件:图G存在。 操作结果:销毁图G。 LocateVex( G, u ) 初始条件:图G存在,u和G中顶点有相同特征。 操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返 回其它信息。 GetVex( G, v ) 初始条件:图G存在,v是G中某个顶点。 操作结果:返回v的值。 PutVex( &G, v, value ) 初始条件:图G存在,v是G中某个顶点。 操作结果:对v赋值value。 FirstAdjVex( G, v ) 初始条件:图G存在,v是G中某个顶点。 操作结果:返回v的第一个邻接顶点。若顶点在G中没有邻接顶点, 则返回“空”。 NextAdjVex( G, v, w ) 初始条件:图G存在,v是G中某个顶点,w是v的邻接顶点。 操作结果:返回v的(相对于w的)下一个邻接顶点。若w是v的 最后一个邻接点,则返回“空”。 InsertVex( &G, v ) 初始条件:图G存在,v和图中顶点有相同特征。 操作结果:在图G中增添新顶点v。 DeleteVex( &G, v ) 初始条件:图G存在,v是G中某个顶点。 操作结果:删除G中顶点v及其相关的弧。 InsertArc( &G, v, w )

最小生成树问题课程设计报告

数据结构课程设计 目录 一. 设计目的.................................................................................................. 错误!未定义书签。 二. 设计内容 (1) 三.概要设计 (1) 1、功能模块图 (1) 2、各个模块详细的功能描述 (2) 四.详细设计 (3) 1.主函数和其他函数的伪码算法 (3) 2、主要函数的程序流程图 (7) 3、函数之间的调用关系图 (15) 五.测试数据及运行结果 (15) 1.正常测试数据及运行结果 (16) 2、非正常测试数据及运行结果 (17) 六.调试情况,设计技巧及体会 (18) 七.参考文献 (19) 八.附录:源代码 (19)

一. 设计目的 课程设计是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。能够在设计中逐步提高程序设计能力,培养科学的软件工作方法。而且通过数据结构课程设计能够在下述各方面得到锻炼: 1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。 2、提高程序设计和调试能力。通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 3、培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。 二. 设计内容 最小生成树问题: 设计要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。 三.概要设计 1、功能模块图

构造可以使N个城市连接的最小生成树

构造可以使N个城市连接的最小生成树 专业:_________ 班级:_________ 姓名:_________ 学号:_________ 完成日期:_________ 【问题描述】 给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。 【设计需求及分析】 1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义, 若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。 2、要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 3、表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)。 【设计功能的实现】(用C或C++语言描述) #include #include #include #include #include "TypeDefine.h" #include "AdjacencyMatrix.h" #include "InitializeFunction.h" #include "MiniSpanTree_KRUSKAL.h" #include "MiniSpanTree_PRIM.h" #include "DisplayNet.h" #include "DeleteInfo.h" MGraph G; //全局变量G

int main(int argc, char * argv[]);//主函数 Status LocateVex(MGraph G, VertexType v);//判断城市v 在网G 中的位置Status CreateUDN(MGraph &G);//创建网G 的邻接矩阵 void DisplayNet(MGraph G);//以邻接矩阵的形式显示网G void MiniSpanTree_KRUSKAL(MGraph G);//最小生成树的Kruskal 算法void MiniSpanTree_PRIM(MGraph G, VertexType u);//最小生成树的Prim 算法Status Minimum(closedge closeEdge, int n);//Prim 算法中求下一个城市的函数void DeleteInfo(MGraph &G);//释放堆内存上动态申请的空间 int main(int argc, char * argv[]) { CreateGraph(G); DisplayNet(G); MiniSpanTree_KRUSKAL(G); MiniSpanTree_PRIM(G, G.vexs[0]); DeleteInfo(G); cout<

汽车构造拆装实习报告.

机械与车辆学院 《汽车构造拆装实习》实习报告(2011-2012 学年第二学期姓名: 学号: 班级: 指导老师: 实习时间: 成绩: 目录 实习概 述. ................................................................. 错误! 未定义书签。内容一: 五十铃柴油发动机发动机的拆装....................... 3 内容二: 丰田汽油发动机的拆装................................. 4 内容三: 手动变速器的拆装..................................... 6 内容四: 驱动桥的拆装..................................... ...... 9 内容五: 制动系和悬架的拆装................................. 10 心 得体 会. ................................................................. (11) 实习概述 一、实习目的

1、巩固和加强汽车构造和原理课程的理论知识, 为后续课程的学习奠定必要的基础。 2、使学生掌握汽车总成、各零部件及其相互间的连接关系、拆装方法和步骤及注意事项; 3、学习正确使用拆装设备、工具、量具的方法; 4、了解安全操作常识, 熟悉零部件拆装后的正确放置、分类及清洗方法,培养良好的工作和生产习惯。 5、锻炼和培养学生的动手能力。 二、实习要求 1、实习实训期间不得用手机上网、游戏和听音乐; 2、操作时禁止吸烟, 远离火源, 安全第一。 3、严格遵守安全操作规程, 杜绝安全事故的发生。 4、独立完成各机构、总成、机件的拆装, 掌握它们相互间的装配关系, 掌握正确的拆装方法。 5、拆装实习期间,不得穿拖鞋进入实验室, 以防受伤。 6、实习期间, 不得将食物带入实验室; 7、严格按照技术要求拆装, 注意零部件拆装顺序、每个螺栓的紧固力矩及装配间隙的调整等。 8、听从实习指导教师的安排,不要随意开动设备, 以免发生意外。 9、实习中不迟到早退, 不得无故缺勤。有事要请假。 10、爱护设备和工具。损坏或丢失工具要赔偿。

n个城市最小生成树实验报告材料

数据结构 课程设计报告 起评分理论成绩实践成绩总成绩 院系: 专业: 班级: 学号: : 教师: 时间:

目录 一、设计要求 (3) 1、问题描述 (3) 2、功能 (3) 3、数据 (3) 二、概述与分析 (3) 1、图 (3) 2、邻接矩阵 (3) 3、生成树 (4) 4、最小生成树 (5) 5、最小生成树的操作 (5) 三、程序设计及分析 (6) 四、流程图 (7) 1、模块结构流程图 (7) 2、Prim算法流程设计 (8) 五、测试分析 (8) 六、总结 (10) 七、源程序代码 (10)

一、设计要求: 1、问题描述 构造可以使n个城市连接的最小生成树。 2、功能 给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。本人采用的是Prim算法。 3、数据 城市间的距离网采用邻接矩阵表示(要求至少6个城市,10条边),邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 表示城市间距离网的邻接矩阵(要求至少6个城市,10条边) 二、概述与分析 1、图 图的定义:图G是有两个集合V和E组成,记做G=(V,E),其中V是定点的有限集合,记做V(G),E是连接V的两个不同的顶点的边的有限集合,记做E(G)。 2、邻接矩阵 邻接矩阵是图的一种存储方法,它是表示顶点之间相邻关系的矩阵。设 G=(V,E)是具有n(n>0)个顶点的图,顶点的顺序依次为(v 0,v 1,… ,v n-1 ),则G的 邻接矩阵A是n阶方阵,其定义如下。 1)如果G是无向图,则 1 (v i,v j ) ∈E(G) A[i][j]= 0 其他 2)如果G是有向图,则 1 ∈E(G) A[i][j]= 0其他

车辆构造实习报告范文

车辆构造实习报告范文 《汽车构造》是与汽车相关专业的一门重要的专业基础课,是学生掌握汽车各总成部件的构造和工作原理的基础,由于该课程有内容广泛、零部件数量多、结构复杂、内部构造可视性差等特点,使得学生学习该课程时有一定的难度。 汽车构造实习报告一 汽车是当今世界最重要、最现代化的交通工具,同时也是数量最多、最普及、活动最广泛、运输量的交通工具。在现代社会中,没有别的交通工具能与之媲美。所以作为一名工程技术大学汽车学院的学生,我想是可以感到骄傲和自豪的。 从进入大学的那天起,我就盼望着能亲手拆装汽车的零部件,深入及详细的了解汽车的内部构造和工作原理。现在机会终于来了!期盼已久的为期4周的汽车构造拆装实习开始了! 汽车构造拆装实习是在学习完汽车构造课程后重要的实践性教学环节。在刚刚过去的两周里,我以及我的组员们圆满地完成了汽车构造拆装实习中汽车发动机构造实习的教学任务及要求。发动机就好比汽车的心脏,是汽车行驶的动力源。我们这次实习的发动机是别克凯越1.6升直列电喷汽油发动机。

实习的第一天早上,我和室友孔繁易同学早早地就去了实训中心5号楼——也就是我们汽车构造实习的大楼。进入教室后,我们并没有找到要拆装的发动机,也没有大型的零部件,甚至连个工具都看不见,这让我们疑惑不解。过了不久,指导实习的两位老师进入教室,作起了实习动员。张老师年纪较轻,他自己介绍说是我们这个专业毕业的学长。另一位是头发有些花白的陆老师,不难想象,陆老师一定身经百战,经验丰富。 我们分好小组后,就被领进了拆装工作室。同学们看着每组旁边架起的凯越发动机,心里的欣喜溢于言表。不过第一天,又是第一次接触拆装实习,当然不会这么快让我们去碰真实地发动机啦。所以当天,我们每一个小组都被分配了一台化油器。“麻雀虽小,五脏俱全”别看化油器小小的不起眼,里面包含了50多个零部件。在老师简单介绍完化油器的一些特点后,我们的拆装实习就正式开始了。组长沈鹰杰同学负责主拆,其他的组员就将拆下来的零件归类,并通过查阅资料,开始对其结构和作用热烈地讨论。经过一天的实习,我们组能熟练地拆装化油器,而且可以结合图纸认识化油器的各个部件名称及其作用。最后在老师的帮助下,我们理解了化油器的六大系统(浮子系统,怠速系统,主供油系统,加浓系统,加速系统,启动系统)工作原理,还能针对实物描述油路和工作过程,并且对冷启动,怠速,小负荷,中等负荷,大负荷和全负荷,加速这六种工况进行了研究,深入了解了每个工况下的过量空气系数,节气门的变化和每个工况时

数据结构课程设计最小生成树的构建实验报告

《数据结构课程设计》题目二:最小生成树的构建 学院:XXXXXXXXXXX 班级:XXXXXXXXXXX 学号:XXXXXXXXXXX 姓名:XXXXXXXXXXX 设计时间:XXXXXXXXXXX

目录: 1.需求分析--------------------------------------------- 1 2.课题设计内容--------------------------------------- 1 (1)课程设计基本流程------------------------------------------ 1 (2)详细设计说明------------------------------------------------1 (3)界面操作流程图:----------------------------------------- 2 (4)主要程序------------------------------------------------------3 (5)运行结果截图----------------------------------------------- 5 3.得意之处--------------------------------------------- 6 4.设计实践过程中的收获与体会------------------ 6 5.设计目前存在的问题------------------------------ 7 6.主要参考文献-------------------------------------- 7

一、需求分析 本课程主要是完成一个最小生成树的构建,要求用克鲁斯卡尔算法或者普利姆算法求网的最小生成树(此程序我用的是 普利姆算法),并输出各条边及他们的权值。要求用户在使用 时可以准确输入顶点及每个顶点的关系,运算出可以建立的关 系网,最后利用普利姆算法准确输出最短路径。 二、课程设计内容 1、课程设计基本流程: 关于此课程的设计,是从设计要求入手的。根据对知识的掌握程度,我选择了用普利姆算法进行设计。 根据实验要求,我定义了一个prims类,在类中定义一个私有成员函数和一个公有成员函数。定义相关变 量和相关函数,并完善程序。 2、详细设计说明: 首先在私有成员private中定义节点个数n、图中边的个数g,树的边的个数t,源节点s。定义二维数组 graph_edge[99][4]和tree_edge[99][4],分别为图的边 和树的边。因为普利姆算法是把图分为两部分进行运算, 所以我定义了T1[50],t1为第一部分, T2[50],t2为第 二部分。在公有成员public中定义输入函数input()、 算法函数algorithm()、输出函数output()。 1

汽车构造实习报告

汽车构造实习报告 汽车构造实习报告 东北林业大学 实习报告 学生:专业班级:学院:指导教师: 年月日 实习名称实习时间实习单位督导教师/职称至实习地点实习目的实习内容解决的主要问题及实习结果学生自我总结督促教师评阅签字:年月日注:纸张填写不够可另加附页。 扩展阅读:丰田构造实习报告 汽车拆装受训报告 201*-11-2518:36:03阅读717评论1字号:大中本人 实习目的与要求()拆装实习目的 ⒈巩固和加强汽车构造和原理课程的理论知识,为后续课程的学 习奠定必要的基础。 ⒉使学生掌握汽车总成各零部件及其相互间的连接关系 拆装 方法和示例及注意事项; ⒊学习恰当使用拆装设备工具量具的方法; ⒋了解安全管理操作常识,熟悉零部件片面拆装后的正确放置 分类及清 洗方法,培养良的工作和生产习惯。

⒌锻炼和培养学生的动手能力。 (二)实习操作要求 ⒈严格遵守安全操作规程,杜绝安全事故的会发生。 ⒉独立完成各机构总成机件的拆装,掌握它们相互间的 装配 关系,掌握正确的拆装方法。⒊熟悉各部件名称作用和结构 特点。了解机件的性能制造加 工方法。 ⒋掌握关键零部件制图方法。 ⒌学会判断分析装置处理常见故障及正确使用各种拆装 设备工 具量具。 ⒍严格按照技术要求拆装,注意零部件拆装顺序每个螺栓的 紧 固力矩及装配后段的调整尾段等。 7 听从实习指导教师的安排,不要随意开动电子系统,以免发 生意外。 8 辅导中不迟到早退,不得无故缺勤。有事要请假。 9 爱护设备和工具。损坏或丢失工具要赔偿。 10 实习完毕,学生应协助指导教师清点工具,打扫工作场地。 (三)拆装实习意义

1 通过拆装实习,巩固加强和加强知识的学习,巩固和加强 《汽车构造》和《汽车理论》的理论知识,为专业课后续课程的古人 云学习奠定必 要的基础; 2 掌握安全操作方式常识,零部件拆装后的正确放置分类 及清洗方 法,养成明生产的良习惯;3 懂得并能正确地使量具及专门工具; 4 锻炼和培养学生的动手能力,有利于培养团队加强合作神。 二实习内容 掌握上海汽车的传动系统行驶系统制动系统转向系 统和制动系统中各主要零部件的工作原理,以及它们的拆卸装配 和调整多方面的操作。 ()主减速器及差速器的拆装 本次实习所使用的汽车配件是CA1091双级主减速器 EQ1090单级主减速器及差速器。实习的内容是根据汽车主减速器及差速器结构 的工作要求,进行主减速器差速器的拆卸清洗和装配。拆装 主减速器,分析其结构原理,拆装锥形齿轮差速器,分析其作用原理。具体步骤如 下: 1 拆卸:步:用对角线交叉法分次旋下主减速器壳和后桥壳, 拆卸下主减速器总成。二步:拆下主动双曲线齿轮连接凸缘及油封座 锥齿轮轴承座,拆下主动双曲线齿轮。三步:拆下从摇动拆走双曲线 齿轮轴承盖,卸下从动双曲线齿轮柴油发动机,旋下离合器壳螺丝分 解差速

n个城市最小生成树实验报告

数据结构 课程设计报告 院系: 专业: 班级: 学号: 姓名: 教师: 时间:

目录 一、设计要求 (3) 1、问题描述 (3) 2、功能 (3) 3、数据 (3) 二、概述与分析 (3) 1、图 (3) 2、邻接矩阵 (3) 3、生成树 (4) 4、最小生成树 (5) 5、最小生成树的操作 (5) 三、程序设计及分析 (6) 四、流程图 (7) 1、模块结构流程图 (7) 2、Prim算法流程设计 (8) 五、测试分析 (8) 六、总结 (10) 七、源程序代码 (10)

一、设计要求: 1、问题描述 构造可以使n个城市连接的最小生成树。 2、功能 给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。本人采用的是Prim算法。 3、数据 城市间的距离网采用邻接矩阵表示(要求至少6个城市,10条边),邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 表示城市间距离网的邻接矩阵(要求至少6个城市,10条边) 二、概述与分析 1、图 图的定义:图G是有两个集合V和E组成,记做G=(V,E),其中V是定点的有限集合,记做V(G),E是连接V的两个不同的顶点的边的有限集合,记做E(G)。 2、邻接矩阵 邻接矩阵是图的一种存储方法,它是表示顶点之间相邻关系的矩阵。设 G=(V,E)是具有n(n>0)个顶点的图,顶点的顺序依次为(v 0,v 1,… ,v n-1 ),则G的 邻接矩阵A是n阶方阵,其定义如下。 1)如果G是无向图,则 1 (v i,v j ) ∈E(G) A[i][j]= 0 其他 2)如果G是有向图,则 1 ∈E(G) A[i][j]= 0其他

汽车构造实习范文

汽车构造实习范文 汽车构造拆装实习报告 姓名:韩震 学号:1151953 老师:周德宽 讨论。态度认真,努力完成老师布置的各项任务,收获颇丰。 自我评价:实习时认真聆听老师的讲解,积极思考,与同学出勤情况:全勤 xx.7 A部分技术部分 一、发动机 1、气门拆装的过程实验室为气门顶置凸轮轴上置齿形带传动的配气机构。拆卸过程:

1) 拆下汽缸盖。 2) 按顺序取下支撑盖,并按顺序放好。取下凸轮轴,注意小心轻放,避免断裂。 3) 取下液压挺杆小总成。拆除时记住顺序,装配时须装回原位。因为相配对的磨损一致。 4) 用专用工具取下气门锁片,弹簧座圈,气门内外弹簧,气门油封和气门。安装过程: 1) 将气门油封压装于气门导管上,压到位,再装上气门弹簧与气门弹簧座,用专用工具装上气门锁片。装锁块时注意锁片大端朝上。锁片应半片半片装,装完第一个半片后先松开专用工具使其锁上。 2) 安装气门液压挺杆; 3) 装上凸轮轴; 4) 按照顺序装上轴承盖;

5) 装上凸轮轴油封。 2、活塞环的拆装方法,活塞环安装时上内切,下外切的问题 气环是保证气缸与活塞间的密封性,防止漏气,并且要把活塞顶部吸收的大部分热量传给气缸壁,由冷却水带走。油环起布油和刮油的作用,还能起到封气的辅助作用。 拆卸过程: 1)用活塞环卡钳拆下活塞环(气环和油环)。 2)拆下活塞销卡环,再拆下活塞销。 3)取下活塞。 4)拆下连杆下头的衬套。 安装过程: 1)检验活塞的磨损,对活塞环的检查和选配,检查连杆衬套和销。

2)将选配好的活塞环清洁后按气环,油环分类,并注意断面结构和安装顺序。 3)先装油环。如果是组合式油环,则应先装衬环,再装刮片。 4)安装气环。用专用活塞环扩张钳将气环按安装的要求和方向装入环槽,镀有铬的环应安装在第一道。 5)三道环的开口应相互错开120°,四道环的开口应相互错开90°。组合油环的上、下刮片开口应错开180°,且与衬环的开口应相互错开45°~90°。安装时,所有的环开口还要错开活塞销孔及活塞最大侧压力的方向。 活塞环安装时内切面向上,外切面向下: 扭曲环是在矩形环的内圆上边缘或外圆下边缘切去一部分,使断面呈不对称形状,在环的内圆部分切槽或倒角的称内切环,在环的外圆部分切槽或倒角的称外切环。装入气缸后,由于断面不对称,产生不平衡力的作用,使活塞环发生扭曲变形。活塞上行时,扭曲环在残余油膜上浮,可以减小摩擦,减小磨损。活塞下行时,则有刮油效果,避免机油烧掉。同时,由于扭曲环在环槽中上、下跳动的行程缩短,

数据结构课程设计报告(最小生成树完整版)

武 夷 学 院 课程设计报告 课程名称: 数据结构 设计题目: 最小生成树的应用 学生班级: 09计科2班 学生姓名: 蒋家权,陈相财,吴继伟,梁丽春 指导教师: 林丽惠 完成日期: 2011-1-19

课程设计项目研究报告 目录 一、问题分析和任务定义....................................................................................... - 1 - 二、实现本程序需要解决的问题如下................................................................... - 1 - 三、测试数据........................................................................................................... - 2 - 四、算法思想........................................................................................................... - 3 - 五、模块划分........................................................................................................... - 4 - 六、算法设计与分析............................................................................................... - 7 - 七、源程序............................................................................................................. - 11 - 八、测试数据......................................................................................................... - 14 - 九、课程设计项目进度表及任务分配表及任务分配表..................................... - 16 - 十、设计心得......................................................................................................... - 17 -十、参考书目......................................................................................................... - 18 -

相关文档