




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计指导书 (共13题)一、课程设计的目的课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。为今后学习其他计算机课程打下基础。课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。二、课程设计的要求在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思
2、算法、通过算法的设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的课程设计与程序分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。三、课程设计的学生分组情况每组三至五人,共同研究、共同讨论,可以共同编写算法,但必须各自独立完成各自的程序。四、课程设计的时间安排课程设计前两周:将各项任务及问题进行讲解、分析。课程设计一周: 星期一:学生对任务进行讨论、研究与分析,初步设计出算法。 星期二到星期四:设计出详细算法,并上机调试程序。 星期五到星期六:写出课程设计报告并考核。五、课程设计的主要内容【课程设计题目一】一元稀疏多项式加法、乘法器【问题描述】设计一个
3、一元稀疏多项式加法、乘法器用于计算两个多项式的加法和乘法。例如(x2+4x5+2x9)+(x+3x4)或(7x4+4x6+2x9)*(x4+3x9)【基本要求】(1) 输入并建立两个多项式f(x)和g(x);(2) 输出每个多项式,要求输出时按指数从小到大输出。(3) 两个多项式完成加法、乘法运算。(4) 输出两个多项式的加法之和及乘积的结果。(5) 写出课程设计报告【实现提示】用带表头结点的单链表存储多项式。【测试数据】分别选定三组测试数据进行测试,验证程序的正确性。【课程设计题目二】局域网的架设问题【问题描述】若要在8个城市(A、B、C、D、E、F、G、H)之间架设局域网,如何以最低的经济
4、代价架设这个局域网。【基本要求】(1) 利用三种方法(Prim算法、克鲁斯卡尔(Kruskual和矩阵运算)算法生成局域网的架设方案(2) 写出课程设计报告。【测试数据】分别对每种方法选定一组测试数据进行测试,验证程序的正确性。【课程设计题目三】二叉树的创建、二叉树的遍历【问题描述】创建一棵二叉树,并对二叉树进行中序、前序、后序和层次遍历,分别写出它们的递归、非递归遍历算法。【基本要求】创建多种(五种以上)不同形态的二叉树,验证上述算法。【课程设计题目四】校园导游咨询系统【问题描述】设计一个你所在学校的校园导游程序,为来访的客人提供各种信息查询服务。【基本要求】(1) 设计你所在学校的校园平面
5、图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称,代号,简介等信息;以边表示路径,存放路径长度等相关信息。(2) 为来访客人提供图中任意景点相关信息的查询。(3) 为来访客人提供图中任意景点的问路查询,即查出任意两个景点之间的一条最短的简单路径。(4) 写出课程设计报告【测试数据】选定一组测试数据进行测试,验证程序的正确性。【课程设计题目五】通信网络的架设问题【问题描述】若要在n(10)个城市之间建设通信网络,只需要架设n-1条线路即可,如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔(Kruskual和矩阵
6、运算)生成网中的最小生成树(2)写出课程设计报告。【测试数据】分别对每种方法选定三组测试数据进行测试,验证程序的正确性。【课程设计题目六】内部排序的比较【问题描述】比较内部排序冒泡排序、插入排序、二分插入排序、选择排序的运行时间。给出算法执行的时间阶或每个程序的运行时间,精确到秒。【基本要求】(1)比较下列几种内部排序:冒泡排序、插入排序、二分插入排序、选择排序的运行时间。要求随机生成20000个测试数据进行测试,并输出每个程序的运行时间,精确到秒。(2)写出课程设计报告【测试数据】选定一批测试数据进行测试,验证程序的正确性并对计算时间进行比较。【课程设计题目七】算法表达式的求值演算【问题描述
7、】以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教科书给出的算符优先关系,加上乘方()和求除(%)运算符,实现对算术混合运算表达式的求值。【基本要求】(1) 用顺序栈实现(2) 含有乘方()、加(+)、减(-)、乘(*)、除(/)、求除(%)等运算;并含有括号。(3) 分别以五组不同的表达式作为测试实例,每个实例中含有上述所有运算符,测试其结果的正确性。(4) 写出课程设计报告【测试数据】选定五组测试数据进行测试,验证程序的正确性。【课程设计题目八】设计一个矩阵运算器【问题描述】设计一个矩阵运算器,对矩阵进行乘方()、加(+)、减(-)、乘(*)运算;【基本要求】(1) 参见
8、数据结构题集P136页4.1(2) 求含有乘方()、加(+)、减(-)、乘(*)运算;。(3) 写出课程设计报告【测试数据】分别选定一组测试数据进行测试,验证程序的正确性。【课程设计题目九】自来水管理架设问题【问题描述】若要在扬州大学的八个居民区(A区、B区、C区、D区、E区、F区、G区、H区)之间架设自来水管道,如何以最低的经济代价架设这个自来水管道。【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔Kruskual和矩阵运算)算法生成自来水管道的架设方案(2)写出课程设计报告。【测试数据】分别对每种方法选定三组测试数据进行测试,验证程序的正确性。【课程设计题目十】校园网架设的方案设计
9、问题【问题描述】若要在扬州大学的八个校区(江阳路南校区、江阳路北校区、盐阜校区、瘦西湖校区、农学院校区、工学院校区、水利学院校区、医学院校区)之间架设校园网,如何以最低的经济代价架设这个校园网。【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔(Kruskual)和矩阵运算)算法生成校园网的架设方案(2)写出课程设计报告。【测试数据】分别对每种方法选定一组测试数据进行测试,验证程序的正确性。【课程设计题目十一】学生成绩管理系统【问题描述】现有学生成绩信息文件1(1.txt),内容如下姓名 学号 语文 数学
10、 英语 张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82
11、160; 56王露 04 56 45 77陈东明 05 67 38 47. . .
12、. 学生成绩信息文件2(2.txt),内容如下:姓名 学号 语文 数学 英语 陈果 31 57 68 82李华明 32 88
13、0; 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58
14、0; 77. . . . 【基本要求】试编写一管理系统,要求如下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少
15、采用两种查找方法实现)5) 要求使用结构体和链表实现上述要求.【课程设计题目十二】学生成绩管理系统【问题描述】现有学生成绩信息文件1(1.txt),内容如下姓名 学号 语文 数学 英语 张明明 01 67 78 82李成友 02 78
16、60; 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 &
17、#160; 38 47. . . . 学生成绩信息文件2(2.txt),内容如下:姓名 学号 语文 数学 英语 陈果 3
18、1 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34
19、160; 50 45 87陈道亮 35 47 58 77. . . . 【基本要求】试编写一管理系统,要求如
20、下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体和数组实现上述要求.【课程设计题目十三】算法表达式的求值演算【问题描述】以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教科书给出的算符优先关系,加上乘方()和求除(%)等运算符,实现对算术混合运算表达式的求值。【基本要求】(1) 用链栈实现(2) 含有乘方()、加(+)、减(-
21、)、乘(*)、除(/)、求除(%)等运算;并含有括号。(3) 分别以五组不同的表达式作为测试实例,每个实例中含有上述所有运算符,测试其结果的正确性。(4) 写出课程设计报告【测试数据】选定五组测试数据进行测试,验证程序的正确性。六、课程设计报告的主要内容课程设计报告主要包括以下几方面的内容:(1) 课程设计的题目(2) 课程设计的目的(3) 分析系统的主要功能及用途(4) 分析和描述系统的基本要求(5) 问题实现的主要算法与分析(6) 源程序(7) 使用方法与说明(8) 课程设计的小结(9) 参考文献七、课程设计的考核结合学生的动手能力,独立分析解决问题的能力和创新精神,总结报告和答辩水平以及
22、学习态度综合考评。考核成绩分优、良、中、及格和不及格五等。考核主要包含以下几方面内容:1) 运行所设计的系统2) 回答相关题目的问题3) 提交课程设计报告4) 提交软盘(含源程序、执行程序和课程设计报告)5) 内容要有创新。八、附录(课程设计报告示例)数 据 结 构课 程 设 计 报 告课题名称最小生成树问题 姓名× × × 学院 广陵学院 系科班级 计科81101 指导老师 陈宏建 日期2013年1月12日 目录l 一、问题描述 2l 二、概要设计 2n 1抽象数据类型定义2n 2程序包含模块 2n 3函数调用关系 3l 三、详细设计 3n 1顶点、边、图和集合
23、类型 3n 2图的基本操作 4n 3程序详细代码 5n 4函数调用关系图 15l 四、设计和调试分析15l 五、用户手册16l 六、测试结果18l 七、附件19l 八、心得体会20最小生成树问题一、 问题描述1、 要在n个城市之间建设通信网络,只需要架设n-1条线路即可。如何以最低的经济代价建设这个通信网络,是一个网的最小生成树问题。2、 利用克鲁斯卡尔算法求网的最小生成树。假设连通网N=(V,E),则令最小生成树的的初始状态为只有n个结点而无边的非连通图T=(V,),图中每一个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去
24、此边选择下一条代价最小的边。依次类推,直至T中所有顶点都在同一连通分量上为止。3、 使用Mfset类表示构造生成树过程中的连通分量。4、 测试数据(附后)。二、 概要设计1、 抽象数据类型定义如下:ADT Graph数据对象V:V是具有相同特性的数据元素的集合,成为顶点集。数据关系R:R=VRVR=(v,w)|v,wV,(v,w)表示v和w之间存在路径基本操作P:CreatGraph(&G);操作结果:初始化一个图。Initial(&S,n,x1,x2,xn);操作结果:初始化操作。构造一个由n个子集(每个子集只含单个成员Xi)构成的集合S。Find(S,v);初始条件:S是已
25、经存在的集合,v是某个子集成员。操作结果:查找函数。返回S中v所属子集Si。Merge(&S,i,j);初始条件:Si和Sj是S中两个互不相交的非空集合。操作结果:归并操作。将Si和Sj中的一个并入另一个。Kruskal(void);初始条件:图G存在。操作结果:求图G的最小生成数。Output(void);初始条件:已经生成图G的最小树。操作结果:输出操作。将最小生成树以文本形式输出到文件中。ADT Graph2、 本程序包含5个模块1) 主程序模块,其中主函数为main() 初始化图形界面; 读入用户选择信息; 根据用户选择执行相应模块; 关闭文件及图形界面; ;2) 汉字显示模块
26、实现DOS模式下的汉字显示;3) 随机图单元模块实现随机生成图;4) 读图模块实现从指定文件中读图;5) 图形输出模块实现图的仿真输出。6) 集合操作模块实现集合的查找合并。7) 求最短路径模块实现Kruskal算法求图最短路径。3、 函数调用关系:三、 详细设计1、 顶点、边、图和集合类型#define change(a,b) a=a+b,b=a-b,a=a-b;/交换两个变量值/值#define NYAN /是否演示树的生成过程typedef struct int x,y;/该城市的纵横坐标 int tag;/该城市的访问标志 char name64;/城市名verType;/顶点类型ty
27、pedef struct int bg,ed;/边的两端顶点号 int wt;/边的权值 int tag;/边的访问标志edgType;/边类型typedef struct verType *v;/指向顶点集合 edgType *e;/指向边集合 int vn,en;/顶点及边的数目 char name64;/图名字GType;/图类型GType g;/图全局变量FILE *fp;/文件指针变量2、 图的基本操作void initgph(void);/初始化函数。将系统设置为图形工作模式。void getdot(unsigned char c,unsigned char n8);/将c分解为二
28、进制01串,存放在n中。int pnthz(int x,int y,int fcolor,int bcolor,char os);/x,y是屏幕坐标,fcolor和bcolor是前景色及背景色,os是汉字字符串;在x,y位置输出汉字串os。void copyedg(edgType *e1,edgType *e2)/ e1和e2是图的两条边。将e1的内容赋给e2。void randomedg(void)/初始化。对边集进行随机赋值。void randomver(void)/初始化。对顶点集进行随机赋值。void readver(void)/读入信息。将存放在文件里的图顶点信息读入内存。void
29、readedg(void)/读入信息。将存放在文件里的图边信息读入内存。void drawver(void)/绘图操作。在屏幕上绘制结点。void drawedg(void)/绘图操作。在屏幕上绘制边。void initial(void)/初始化操作。构造一个由n个子集(每个子集只含单个成员Xi)构成的集合S。int find(int v)/S是已经存在的集合,v是某个子集成员。返回S中v所属子集Si。void merge(int v1,int v2)/S1和S2是S中两个互不相交的非空集合。将S1和S2中的一个并入另一个。void kruskal(int v1,int v2)/求图G的最小生
30、成树。void output(void)/输出操作。将最小生成树以文本形式输出到文件中。void fromfile(char fname)/fname是图文件名。打开文件操作。打开图信息文件,为读图做准备。void userinput(void)/由用户输入图文件名。void randomimage(void)/调用Randomedg()和Randomver()函数对边集和顶点集进行随机赋值。int choose(void)/由用户选择图信息的生成方式。返回选择项的序号。3、 程序详细代码#include<stdio.h>#include<stdlib.h>#inclu
31、de<string.h>#include<time.h>#include<math.h>#include<graphics.h>#define change(a,b) a=a+b,b=a-b,a=a-b;#define NYANtypedef struct int x,y,tag; char name64;verType;typedef struct int bg,ed,wt,tag;edgType;typedef struct verType *v; edgType *e; int vn,en; char name64;GType;GType
32、g;FILE *fp;void initgph(void)int gmode,gdrive; printf("nntInitializtion graph mode, please wait."); gmode=DETECT; initgraph(&gmode,&gdrive,"C:Tc");void getdot(unsigned char c,unsigned char n8)char i; for(i=0;i<8;i+) ni=(c>>(7-i)&1);int pnthz(int x,int y,int f
33、color,int bcolor,char os)FILE *hzk=NULL; unsigned int j,k,cn2,cx,cy; unsigned long i,len,p; unsigned char c32,n8,ch2,s128; for(i=0,j=0,len=0;osj!='0'i+,j+,len+) if(osj>32) si+=0xAA; si=0xA1+(osj-33); len+; else if(osj=32) si+=0xA1; si=0xA1; len+; else si=osj; if(len=0) return(0); len/=2;
34、if(hzk=fopen("C:WindowsCommandChs16.fon","rb")=NULL) return(1); for(i=0;i<len;i+) ch0=si*2; ch1=si*2+1; cn0=(ch0-0xA1); cn1=(ch1-0xA1); p=(cn0*94L+cn1)*32L; rewind(hzk); fseek(hzk,p,0); fread(&c,sizeof(char),32,hzk); for(j=0;j<32;j+) getdot(cj,n); for(k=0;k<8;k+) cx=
35、(k+(j%2)*8+i*16+x)%640;cy=j/2+y+(k+(j%2)*8+i*16+x)/640)*16;if(nk=1) putpixel(cx,cy,fcolor);else if(bcolor!=-1) putpixel(cx,cy,bcolor); fclose(hzk); return(cx);void copyedg(edgType *e1,edgType *e2)e1->bg=e2->bg; e1->ed=e2->ed; e1->wt=e2->wt; e1->tag=e2->tag;void randomedg(void
36、)int i,j,tag; edgType re; if(g.e!=NULL) free(g.e); g.e=(edgType *)malloc(sizeof(edgType)*g.en); if(g.e=NULL) printf("nMalloc Error!"); return; for(i=0;i<g.en;i+) re.bg=random(g.vn); re.ed=random(g.vn); for(j=0,tag=0;j<i;j+) if(g.ej.bg=re.bg&&g.ej.ed=re.ed)|(g.ej.bg=re.ed&
37、&g.ej.ed=re.bg) tag=1; break; if(re.bg=re.ed|tag=1) i-; continue; re.wt=random(99)+1; re.tag=(-1); for(j=i;(g.ej-1.wt>re.wt)&&(j>0);j-) copyedg(&(g.ej),&(g.ej-1); copyedg(&(g.ej),&re); void randomver(void)int i,xc,yc,r; float dg,st,x,y; if(g.v!=NULL) free(g.v); g.v=
38、(verType *)malloc(sizeof(verType)*g.vn); if(g.v=NULL) printf("nMalloc Error!"); return; dg=0.0; st=Pi/g.vn*2.0; xc=getmaxx()/2; yc=getmaxy()/2; r=xc<yc?xc:yc-10; for(i=0,dg=0;i<g.vn;i+,dg+=st) x=xc+r*cos(dg); y=yc+r*sin(dg); g.vi.x=x; g.vi.y=y; g.vi.tag=0; sprintf(,"%02
39、d",i+1); void readver(void)int i,ord; if(g.v!=NULL) free(g.v); g.v=(verType *)malloc(sizeof(verType)*g.vn); if(g.v=NULL) printf("nMalloc Error in readver!"); return; for(i=0;i<g.vn;i+) fscanf(fp,"%d%s%d%d",&ord,,&g.vi.x,&g.vi.y); g.vi.tag=0; void read
40、edg(void)int i,j; edgType re; if(g.e!=NULL) free(g.e); g.e=(edgType *)malloc(sizeof(edgType)*g.en); if(g.e=NULL) printf("nMalloc Error in read edg!"); return; for(i=0;i<g.en;i+) fscanf(fp,"%d%d%d",&re.bg,&re.ed,&re.wt); re.tag=(-1); for(j=i;(g.ej-1.wt>re.wt)&
41、;&(j>0);j-) copyedg(&(g.ej),&(g.ej-1); copyedg(&(g.ej),&re); void drawver(void)int i,x1,y1,x2,y2; char s64; sprintf(s,"%s结点数:%d边数:%d",,g.vn,g.en); pnthz(640-8*strlen()/3,0,12,-1,s); for(i=0;i<g.vn;i+) setcolor(12); setfillstyle(1,12); fillellipse(g.vi.
42、x,g.vi.y,4,4); pnthz(g.vi.x+8,g.vi.y,15,-1,); void drawedg(void)int i,x1,y1,x2,y2; char s10; for(i=0;i<g.en;i+) if(g.ei.tag<0) setcolor(7); else if(g.ei.tag=0) setcolor(8); else if(g.ei.tag=1) setcolor(10); else setcolor(g.ei.tag); x1=g.vg.ei.bg.x; y1=g.vg.ei.bg.y; x2=g.vg.ei.ed.x; y2
43、=g.vg.ei.ed.y; line(x1,y1,x2,y2); sprintf(s,"%d",g.ei.wt); outtextxy(x1+x2)/2+4,(y1+y2)/2-10,s); void initial(void) g.e0.tag=1;int find(int v)int i; for(i=0;(i<g.en)&&(g.ei.tag>=0);i+) if(g.ei.tag=0) continue; if(g.ei.bg=v|g.ei.ed=v) return g.ei.tag; return -1;void merge(int
44、v1,int v2)int i; if(v1>v2) change(v1,v2); for(i=0;(i<g.en)&&(g.ei.tag>=0);i+) if(g.ei.tag=v2) g.ei.tag=v1;void kruskal(void)int i,j=2,v1,v2; initial(); for(i=1,j=2;i<g.en;i+) v1=find(g.ei.bg); v2=find(g.ei.ed); if(v1=v2&&v1!=(-1) g.ei.tag=0; else if(v1=v2&&v1=(-1)
45、 g.ei.tag=j+; else if(v1*v2<0) g.ei.tag=(v1<0?v2:v1); else if(v1!=v2) merge(v1,v2); g.ei.tag=(v1<v2)?v1:v2; #ifdef YAN drawedg(); if(getch()=27) return; #endif void output(void)FILE *fout; int i; fout=fopen("OUTFILE.TXT","w"); if(fout=NULL) printf("nCan not open out
46、 file!"); getch(); return; fprintf(fout,"%sn",); for(i=0;i<g.en;i+) if(g.ei.tag=1) fprintf(fout,"%s - %st%dn", ,,g.ei.wt); fclose(fout);void fromfile(char fname)fp=fopen(fname,"r"); if(fp=NULL) pnthz(20,30,15,-1,"无法打开图文件:
47、"); outtextxy(144,30,fname); pnthz(20,50,15,-1,"任意键返回"); getch(); cleardevice(); return; fscanf(fp,"%d%d%s",&g.vn,&g.en,); readver(); readedg(); kruskal(); drawedg(); drawver(); output(); pnthz(16,getmaxy()-20,15,0,"任意键返回"); getch();void userinput(voi
48、d)char name128; int i; char help848="图文件结构要求如下", "结点数边数图名", "结点序号坐标坐标名称", "其他结点信息", "起始结点序号终止结点序号权值", "其他边信息", "详细示例参看附带文件" for(i=0;i<8;i+) pnthz(36,100+i*20,15,-1,helpi); pnthz(40,30,15,-1,"图形文件名:"); gotoxy(18,3); ge
49、ts(name); cleardevice(); fromfile(name);void randomimage(void)int tag=1; randomize(); while(tag) cleardevice(); pnthz(120,95,15,-1,"输入图的结点数:"); gotoxy(32,7); scanf("%d",&g.vn); pnthz(136,125,15,-1,"输入图的边数:"); gotoxy(32,9); scanf("%d",&g.en); if(g.en<
50、;=(g.vn*(g.vn-1)/2)&&g.vn>2&&g.vn<30&&g.vn<g.en) tag=0; else pnthz(136,150,15,-1,"数据错误,请重新输入!"); getch(); strcpy(,"随机图形"); cleardevice(); randomver(); randomedg(); kruskal(); drawedg(); drawver(); output(); pnthz(16,getmaxy()-20,15,0,"任
51、意键返回"); getch();int choose(void)int tag=2,key,i; char s632= "最小生成树问题黄健制作", "请选择:","【、演示图(城市通信网络)】", "【、用户输入图文件】","【、随机生成图信息】", "【、退出系统()】" cleardevice(); while(1) for(i=0;i<6;i+) pnthz(100,20*i+40,15,(i=tag?7:0),si); key=getch(); if
52、(key=13) break; else if(key=27) return(0); else if(key>'0'&&key<'5') tag=key-'0'+1; else if(key=0) key=getch(); switch(key) case 72: tag-; break; case 80: tag+; break; if(tag<2) tag=2; else if(tag>5) tag=5; while(kbhit() getch(); cleardevice(); return tag-
53、1;main()int i,tag=1; initgph(); settextstyle(1,0,1); do tag=choose(); switch(tag) case 1: fromfile("ChinaMap.txt"); break; case 2: userinput(); break; case 3: randomimage(); break; case 4: tag=0; break; while(tag); fcloseall(); closegraph();函数调用关系图四、设计和调试分析1. 考虑到需要使用集合的并等运算,故图的存储方式选用了以存储边(
54、带权)的数组表示。原设计另外建立一个数组用来保存集合以及子集。后来发现实现比较困难。只好给边增加一个tag域,其值为所属该边集合的序号。未访问的边赋值-1,已经访问的但不包含在最小生成树中的边赋值0。2. 在从文件中读入边的时候,考虑到后面要对边进行升序排序,故采用直接插入排序方式,每读入一条边就进行一次插入排序。算法的时间复杂度为O(n2).3. 集合的并运算需要遍历全部已经访问过的边,修改其tag值。故复杂度为O(n)。克鲁斯卡尔算法对en条边各扫描一次,时间复杂度为可以达到O(n)。4. 在实现汉字显示时,涉及汉字的区位码和机内码转换问题,在进行了多次尝试后得到转换公式。另外还涉及到文件
55、的二进制读,以及二进制移位操作等。由于每一个汉字都是由256个像素构成,所以显示一个长度为n的汉字串的时间复杂度为O(n3).五、用户手册1. 本程序运行环境为DOS操作系统,执行文件为Image.exe。2. 进入系统后显示选择菜单:图13. 使用上下键或数字键选择一个项目,则进入选项。1.选项一运行结果如下图2所示:图2其中颜色为亮绿色(该处为深灰色)的是在最小生成树中的边。2.进入选项二后用户会看到提示如图3(见下页)。按要求输入图文件名,例如输入Ceshi.txt并回车,调用附带的测试文件,可以看到的输出画面见图4。其中颜色为亮绿色(该处为深灰色)的是在最小生成树中的边。3.选项三的运行效果和选项一类似。4.程序运行后会将运行结果以文本形式输出到文件OutFile.txt中,供用户查询使用。图3图45.由于图文件的格式要求比较高,故提供了两个示例文件ChinaMap.txt和CeShi.txt,用户可以参考创建其他图文件。其含义如图3中所示。六、测试结果测试文件ChinaMap.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳资员代表全权3篇
- 合规自律我做起3篇
- 医疗设备招标采购文件3篇
- 增补合同条款3篇
- 员工股份制合同协议书3篇
- 健身房会员合同协议范本版3篇
- 液力机械在家具生产设备中的应用考核试卷
- 棉织造行业D打印技术与应用考核试卷
- 绿色出行与节能环保考核试卷
- 热电联产系统在能源可持续发展中的贡献考核试卷
- 新进(转岗)职工三级安全教育培训表
- GB/T 44347-2024乡村绿化技术规程
- (修订版)粮油质量检验员理论考试复习题库-下多选、判断题
- 保险行业客户画像分析与精准营销方案
- 沪教版小学六年级数学应用题150道及答案
- 北师大版四年级下册小数乘法竖式计算练习100题及答案
- 2024年湖南省长沙市中考地理试卷真题(含答案解析)
- 《中国健康成年人身体活动能量消耗参考值》(编制说明)
- 食堂大米采购招标文件
- CJT 216-2013 给水排水用软密封闸阀
- CJ-T250-2018建筑排水用高密度聚乙烯(HDPE)管材及管件
评论
0/150
提交评论