南邮数据结构上机实验三图的基本运算及飞机换乘次数最少问题_第1页
南邮数据结构上机实验三图的基本运算及飞机换乘次数最少问题_第2页
南邮数据结构上机实验三图的基本运算及飞机换乘次数最少问题_第3页
南邮数据结构上机实验三图的基本运算及飞机换乘次数最少问题_第4页
南邮数据结构上机实验三图的基本运算及飞机换乘次数最少问题_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告(2015/2016学年第二学期)课程名称数据结构A实验名称图的基本运算及飞机换乘次数最少问题实验时间2016年5月19日指导单位计算机科学与技术系指导教师骆健学生姓名班级学号学院系管理学院专业信息管理与信息系统实习题名图的基本运算班级姓名学号日期20160519一、问题描述验证教材中关于在邻接矩阵和邻接表两种不同的储存结构上实现图的基本运算的算法见程序91程序98,在邻接矩阵存储结构上实现图的深度和广度优先遍历算法,设计主函数,测试上述运算。二、概要设计文件GRAPHCPP中在该文件中定义图数据结构的抽象模板类GRAPH。邻接矩阵类MGRAPH是从抽象类GRAPH派生得来,邻接表类LGRAPH也是从抽象类GRAPH派生得来。主函数的代码如图所示。三、详细设计1类和类的层次设计程序定义了GRAPH类,以及邻接矩阵类MGRAPH和邻接表类LGRAPH以及循环列表类SEQQUEUE。邻接矩阵类MGRAPH继承了GRAPH的数据成员N和E,重载了GRAPH的纯虚函数。保护数据成员TA指向动态生成的二维数组,用以存储邻接矩阵。邻接表类LGRAPH也继承了GRAPH的数据成员N和E及重载了GRAPH的纯虚函数,边结点由类ENODE定义,每个结点有三个域ADJVEX、W和NEXTARC。邻接表的表头组成为一维数组,A是指向该数组的指针。SEQQUEUEINTFRONT,REARINTMAXSIZEBTNODEQSEQQUEUEINTMSIZESEQQUEUEDELETEQBOOLISEMPTYCONSTRETURNFRONTREARBOOLISFULLCONSTRETURNREAR1MAXSIZEFRONTBOOLFRONTBTNODEBOOLENQUEUEBTNODEXBOOLDEQUEUEVOIDCLEARFRONTREAR0(A)循环队列类MGRAPHTATNOEDGEVOIDDFSINTV,BOOLVISITEDVOIDBFSINTV,BOOLVISITEDMGRAPHINTMSIZE,CONSTTMGRAPHRESULTCODEINSERTINTU,INTV,TRESULTCODEREMOVEINTU,INTVBOOLEXISTINTU,INTVCONSTVOIDDFSVOIDBFSTLGRAPHENODEALGRAPHINTMSIZELGRAPHRESULTCODEINSERTINTU,INTV,TRESULTCODEREMOVEINTU,INTVBOOLEXISTINTU,INTVCONSTTGRAPHINTN,EVIRTUALRESULTCODEINSERTINTU,INTV,TVIRTUALRESULTCODEREMOVEINTU,INTV0VIRTUALBOOLEXISTINTU,INTVCONST0T(B)模版类GRAPH,MGRAPH和LGRAPHT2核心算法深度优先搜索用栈来实现1把根节点压入栈中2每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。并把这个元素记为它下一级元素的前驱3找到所要找的元素时结束程序4如果遍历整个树还没有找到,结束程序广度优先搜索使用队列来实现1把根节点放到队列的末尾2每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱3找到所要找的元素时结束程序4如果遍历整个树还没有找到,结束程序DFSBFS四、程序代码TEMPLATEVOIDMGRAPHDFS/深度遍历BOOLVISITEDNEWBOOLNFORINTI0IVOIDMGRAPHDFSINTV,BOOLVISITEDVISITEDVTRUECOUTVOIDMGRAPHBFS/广度遍历BOOLVISITEDNEWBOOLNFORINTI0IVOIDMGRAPHBFSINTV,BOOLVISITEDSEQQUEUEQNVISITEDVTRUECOUTVOIDMGRAPHDIJKSTRAINTV,TD,INTPATH/迪杰斯特拉算法INTI,K,WIFVN1THROWOUTOFBOUNDSBOOLSNEWBOOLNFORI0ICONSTINTINFTY2147483640ENUMRESULTCODEUNDERFLOW,DUPLICATE,FAILURE,SUCCESS,NOTPRESENTTEMPLATECLASSGRAPH/抽象类PUBLICVIRTUALRESULTCODEINSERTINTU,INTV,TVIRTUALRESULTCODEREMOVEINTU,INTV0VIRTUALBOOLEXISTINTU,INTVCONST0PROTECTEDINTN,ETEMPLATE/循环队列类CLASSSEQQUEUEPUBLICSEQQUEUEINTMSIZESEQQUEUEDELETEQBOOLISEMPTYCONSTRETURNFRONTREARBOOLISFULLCONSTRETURNREAR1MAXSIZEFRONTBOOLFRONTTBOOLENQUEUETXBOOLDEQUEUEVOIDCLEARFRONTREAR0PRIVATEINTFRONT,REARINTMAXSIZETQTEMPLATESEQQUEUESEQQUEUEINTMSIZE/构造函数MAXSIZEMSIZEQNEWTMAXSIZEFRONTREAR0TEMPLATEBOOLSEQQUEUEFRONTTXQFRONT1MAXSIZERETURNTRUETEMPLATEBOOLSEQQUEUEENQUEUETX/在队尾插入XIFISFULLCOUTBOOLSEQQUEUEDEQUEUE/删除队头元素IFISEMPTYCOUTCLASSMGRAPHPUBLICGRAPH/邻接矩阵类PUBLICMGRAPHINTMSIZE,CONSTTMGRAPHRESULTCODEINSERTINTU,INTV,TRESULTCODEREMOVEINTU,INTVBOOLEXISTINTU,INTVCONSTVOIDDFSVOIDBFSPROTECTEDTATNOEDGEVOIDDFSINTV,BOOLVISITEDVOIDBFSINTV,BOOLVISITEDTEMPLATEMGRAPHMGRAPHINTMSIZE,CONSTTE0NOEDGENOEDGANEWTNFORINTI0IMGRAPHMGRAPH/析构函数FORINTI0IRESULTCODEMGRAPHINSERTINTU,INTV,TIFAUVNOEDGERETURNDUPLICATEAUVWERETURNSUCCESSTEMPLATERESULTCODEMGRAPHREMOVEINTU,INTV/删除函数IFUN1|VN1|UVRETURNFAILUREIFAUVNOEDGERETURNNOTPRESENTAUVNOEDGEERETURNSUCCESSTEMPLATEBOOLMGRAPHEXISTINTU,INTVCONST/判断边是否存在IFUN1|VN1|UV|AUVNOEDGERETURNFALSERETURNTRUETEMPLATEVOIDMGRAPHDFS/深度遍历BOOLVISITEDNEWBOOLNFORINTI0IVOIDMGRAPHDFSINTV,BOOLVISITEDVISITEDVTRUECOUTVOIDMGRAPHBFS/广度遍历BOOLVISITEDNEWBOOLNFORINTI0IVOIDMGRAPHBFSINTV,BOOLVISITEDSEQQUEUEQNVISITEDVTRUECOUT/结点类CLASSENODEPUBLICENODENEXTARCNULLENODEINTVERTEX,TWEIGHT,ENODENEXTADJVEXVERTEXWWEIGHTNEXTARCNEXTINTADJVEXTWENODENEXTARCTEMPLATECLASSLGRAPHPUBLICGRAPH/邻接表类PUBLICLGRAPHINTMSIZELGRAPHRESULTCODEINSERTINTU,INTV,TRESULTCODEREMOVEINTU,INTVBOOLEXISTINTU,INTVCONSTPROTECTEDENODEATEMPLATELGRAPHLGRAPHINTMSIZE/构造函数NMSIZEE0ANEWENODENFORINTI0ILGRAPHLGRAPH/析构ENODEP,QFORINTI0INEXTARCDELETEQQPDELETEATEMPLATEBOOLLGRAPHEXISTINTU,INTVCONST/判断边是否存在IFUN1|VN1|UVRETURNFALSEENODEPAUWHILEPIFPRETURNFALSEELSERETURNTRUETEMPLATERESULTCODELGRAPHINSERTINTU,INTV,TIFEXISTU,VRETURNDUPLICATEENODEPNEWENODEV,W,AUAUPERETURNSUCCESSTEMPLATERESULTCODELGRAPHREMOVEINTU,INTV/删除IFUN1|VN1|UVRETURNFAILUREENODEPAU,QQNULLWHILEPPPNEXTARCIFPRETURNNOTPRESENTIFQQNEXTARCPNEXTARCELSEAUPNEXTARCDELETEPERETURNSUCCESSINTMAIN/主函数INTN,GCOUTNMGRAPHAN,INFTYLGRAPHBNCOUTGINTANEWINTGINTBNEWINTGINTWNEWINTGFORINTI0IAIBIWIAINSERTAI,BI,WIBINSERTAI,BI,WICOUTCDIFAEXISTC,DCOUTEFIFAREMOVEE,FSUCCESSCOUTINCLUDECONSTINTINF2147483647ENUMRESULTCODEUNDERFLOW,DUPLICATE,FAILURE,SUCCESS,NOTPRESENT,OUTOFBOUNDSTEMPLATECLASSGRAPH/抽象类PUBLICVIRTUALRESULTCODEINSERTINTU,INTV,TW0VIRTUALRESULTCODEREMOVEINTU,INTV0VIRTUALBOOLEXISTINTU,INTVCONST0PROTECTEDINTN,ETEMPLATECLASSMGRAPHPUBLICGRAPH/邻接矩阵类PUBLICMGRAPHINTMSIZE,CONSTTNOEDGMGRAPHRESULTCODEINSERTINTU,INTV,TWRESULTCODEREMOVEINTU,INTVBOOLEXISTINTU,INTVCONSTINTCHOOSEINTD,BOOLSVOIDDIJKSTRAINTV,TD,INTPATHPROTECTEDTATNOEDGETEMPLATEMGRAPHMGRAPHINTMSIZE,CONSTTNOEDGNMSIZEE0NOEDGENOEDGANEWTNFORINTI0IMGRAPHMGRAPHFORINTI0IRESULTCODEMGRAPHINSERTINTU,INTV,TWIFUN1|VN1|UVRETURNFAILUREIFAUVNOEDGERETURNDUPLICATEAUVWERETURNSUCCESSTEMPLATERESULTCODEMGRAPHREMOVEINTU,INTVIFUN1|VN1|UVRETURNFAILUREIFAUVNOEDGERETURNNOTPRESENTAUVNOEDGEERETURNSUCCESSTEMPLATEBOOLMGRAPHEXISTINTU,INTVCONSTIFUN1|VN1|UV|AUVNOEDGERETURNFALSERETURNTRUETEMPLATEINTMGRAPHCHOOSEINTD,BOOLS/求最小DIINTI,MINPOSTMINMININFMINPOS1FOR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论