ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:130.17KB ,
资源ID:18878778      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18878778.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课设Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课设Word格式文档下载.docx

1、各个数据元素均含有类型相同,可唯一标识数据元素的关键字。数据关系R:数据元素同属一个集合。search(s)初始条件:静态表已存在查询信息addstudent(&增加宿舍信息Deletstudent(&删除宿舍信息changestudent(&修改宿舍信息 ADT StaticSearchTable2.本程序模块:主程序模块void main()定义一个数组; switch(选择) case 1:查询 case 2 :增加学生信息 case 3 :删除学生信息 case 4 :修改学生信息 case 0 : 退出系统 初始化模块建立一个数组查询模块查询增加信息模块增加信息删除信息模块删除信息修

2、改信息模块修改信息各模块之间的调用关系如下:修改信息模块 主程序模块 删除信息模块初始 查询 增加信息模块化模块 模块四_9(3)详细设计1.函数的调用关系反映了演示程序的层次结构 主程序 InitRoom Search addstudent Deletstudent changestudent InserSortnumber InserSortnumber InserSortnumber InserSortnumberInserSortroomnumber InserSortroom InserSortroom InserSortroomInserSortname InserSortname

3、 InserSortname InserSortname2.结构体声明:typedef struct string name; string number; string address;RedType; RedType rMAXSIZE + 1; int length;Sqlist;3各函数功能:InserSortnumber()用冒泡法对学号进行排序,并写入number.txt;InserSortroomnumber()用冒泡法对房号进行排序,并写入room.txt;InserSortname ()用冒泡法对姓名进行排序,并写入name.txt;InitRoom()添加宿舍信息 ,并分别保

4、存到changestudent changestudent ame.txt;Search()查询宿舍信息Addstudent()增加宿舍信息,并分别保存到changestudent changestudent ame.txt;Deletstudent()删除宿舍信息,并分别保存到changestudent changestudent ame.txt;Changestudent()修改宿舍信息 ,并分别保存到changestudent changestudent ame.txt;4.main()int _tmain(int argc, _TCHAR* argv) Sqlist s; int n;

5、 couts.length;*输入学生基本信息 InitRoom(s); do cout*学生宿舍管理系统* coutn; switch(n) case 1: coutdata = ch; CreatBiTree(T-lchild);rchild);中序线索二叉树:void InOrderThreading(BiThrTree &Thrt,BiThrTree & Thrt = new BiThrNode; /设置头结点Thrt) exit(1); Thrt-LTag = Link; /头结点左边标志为指针 RTag =Thread; /右边的为线索rchild = Thrt; /有孩子指向头结

6、点本身T) Thrt-lchild = Thrt; /若树根结点为空,则头结点左孩子指向头结点 /若根结点不为空, Thrt-lchild = T; /头结点左孩子指向根结点 pre = Thrt; /设置指针pre指向头结点 InThreading(T); /线索化树T pre-RTag = Thread;rchild = pre;线索化树:void InThreading(BiThrTree p) if(p) InThreading(p- /线索化左子树p-lchild) p-LTag = Thread;lchild = pre; pre-rchild) pre-rchild = p; p

7、re = p;中序遍历:int InOrderTraverse_Thr(BiThrTree T) BiThrTree p; int i=1; p = T-lchild; while(p!=T) while(p-LTag!=Thread) p = p-datadata; i+; length+;RTag=Thread&rchild!rchild; ai=p- /将结点存于数组中 i+; length+; p = p- return OK;四_7(四)调式分析1.采用先序输入建立二叉树2.申请一头结点,中序线索化二叉树;3.中序遍历线索二叉树,并用数组a记录中序输出的data;4.用辅助数组a访问

8、结点的前驱和后继四_7(五)测试结果:题目10:最小生成树问题(*)四_10()、设计题目要求:1 利用克鲁斯卡尔算法求网的最小生成树。2 利用普里姆算法求网的最小生成树。3 要求输出各条边及它们的权值。四_10(二)、需求分析和概要设计:用克鲁斯卡尔和普里姆算法生成图的最小生成树。首先要构造出图,然后将图生成树,故要使用邻接矩阵储存图。四_10(三)、详细设计:1.结构体声明:typedef struct ArcCell VRType adj; /VRType是顶点的关系类型。无权图用1或0表示相连否。对带权图,则为权值类型。 InfoType *info; /表示相关信息的指针ArcCel

9、l,AdjMatrixMAX_VEXTEX_NUMMAX_VEXTEX_NUM;typedef struct VertexType vexsMAX_VEXTEX_NUM; /顶点向量 AdjMatrix arcs; /邻接矩阵 int vexnum,arcnum; /图的当前顶点数和弧度数MGraph; VertexType adjvex; VRType lowcost;closedge; VertexType begin; VertexType end; VRType weight;EdgeType;2.函数声明:int CreateGraph(MGraph &G); /创造图int Loc

10、ateVex(MGraph G,VertexType u); /定位int minmum( closedge closedgeMAX_VEXTEX_NUM);/当前边中的最小边void MinSpanTree_PRIM(MGraph G,VertexType u);/prim算法最小生成树void MinSpanTree_KRUSKAL(MGraph G);/kruskal算法求最小生成树4.各功能模块:G) /创造图 int i,j,k,w; VertexType v1,v2;请输入顶点数和边数G.vexnumG.arcnum; high=G.arcnum; for(i=0;iG.vexnu

11、m;+i)请输入第i+1个顶点信息G.vexsi;+i) /初始化邻接矩阵 for(j=0;j+j) G.arcsij.adj =INFINITY; G.arcsij.info=NULL; for(k=0;k+k)k+1v2w; i=LocateVex(G,v1); j=LocateVex(G,v2); while(i =-1|j=-1)顶点有误,重新输入: edgesk+1.begin=v1; edgesk+1.end=v2; G.arcsij.adj=w; G.arcsji.adj=w; edgesk+1.weight=w;int LocateVex(MGraph G,VertexType

12、 u) / 查找 int i; bool flage = false;i+) if(u=G.vexsi) flage =true; return i; if(flage = flage) return -1;void MinSpanTree_PRIM(MGraph G,VertexType u) /prim int k,j,i; closedge closedgeMAX_VEXTEX_NUM; k=LocateVex(G,u); for(j=0; if(j != k) closedgej.adjvex=u; closedgej.lowcost=G.arcskj.adj; closedgek.l

13、owcost=0; for(i=1; k=minmum(closedge);边:(closedgek.adjvex,G.vexsk)权值:closedgek.lowcost closedgek.lowcost=0; for(j=1; if(G.arcskj.adjclosedgej.lowcost) closedgej.adjvex=G.vexsk; closedgej.lowcost=G.arcskj.adj; void HeapAdjust(int s,int high) /权值堆排序 edges0.weight=edgess.weight; edges0.begin=edgess.beg

14、in; edges0.end=edgess.end; for(int j=2*s;=high;j*=2) if(jhigh&edgesj.weight=edgesj.weight) edgess.weight=edgesj.weight; edgess.begin=edgesj.begin; edgess.end=edgesj.end; s=j; edgess.weight=edges0.weight; edgess.begin=edges0.begin; edgess.end=edges0.end;void HeapSort() int i ; for(i=high/2;i0;-i) Hea

15、pAdjust(i,high); for(i=high;1; edges0.weight=edges1.weight; edges0.begin=edges1.begin; edges0.end=edges1.end; edges1.weight=edgesi.weight; edges1.begin=edgesi.begin; edges1.end=edgesi.end; edgesi.weight=edges0.weight; edgesi.begin=edges0.begin; edgesi.end=edges0.end; HeapAdjust(1,i-1);void MinSpanTr

16、ee_KRUSKAL(MGraph G) /kruskal HeapSort(); for(int k=1;=G.arcnum;k+)edgesk.weight int fatherMAX_VEXTEX_NUM; int i,j,vf1,vf2; fatheri=-1; i=0;j=0; while(iG.arcnum&G.vexnum-1) vf1=Find(father,edgesi+1.begin); vf2=Find(father,edgesi+1.end); if(vf1!=vf2) fathervf2=vf1; j+; coutedgesi+1.beginedgesi+1.endedgesi+1.weight 四_10(四)、调试分析1.通信线路一旦建成,必然是双向的。因此,构造最小生成树的网一定是无向网。设图的顶点数不超过30个,并为简单起见,网中边的权值设成小于100的整数,可利用C语言提供的随机函数产生。2.图的存储结构的选取应和所作操作相适应。为了便于选择权值最小的边,此题的存储结构既不选用邻接矩阵的数组表示法,也不选用邻接表,而是以存储边(带权)的数组表示图。3.kruskal要避免环路产生,设置标志数组。四_10(五)、测试数

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1