版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////LinkedGraph&LinkedGraph::Add(inti,intj)// 向图中添加边 (i,j){returnAddNoCheck(i,j);LinkedGraph&LinkedGraph::AddNoCheck(inti,intj){h[i].Insert(0,j);e++;return*this;}LinkedGraph&LinkedGraph::Delete(inti,intj)LinkedDiGraph::Delete(i,j);e++;//补偿LinkedDiGraph::Delete(j,i);return*this;}#include"stdafx.h"#include"LinkedQueue.h"////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////template<classT>LinkedQueue<T>::~LinkedQueue()//析构函数,删除所有节点{Node<T>*next;while(front){next=front->link;deletefront;front=next;}template<classT>boolLinkedQueue<T>::IsFull()const//判断队列是否已满{Node<T>*p;try{p=newNode<T>;deletep;returnfalse;}catch(NoMem){returntrue;}}template<classT>TLinkedQueue<T>::First()const//{returnfront->data;}template<classT>}TLinkedQueue<T>::Last()const//返回队列最后一个元素{returnrear->data;}template<classT>LinkedQueue<T>&LinkedQueue<T>::Add(constT&x)//把x添加到队列尾部 {Node<T>*p=newNode<T>;//为新元素创建链表节点 p->data=x;p->link=0;if(front)rear->link=p;//队列不为空elsefront=p;rear=p;return*this;}template<classT>LinkedQueue<T>&LinkedQueue<T>::Delete(T&x)//删除第一个元素, 并将它放入{x=front->data;//保存第一个节点中的元素//删除第一个节点Node<T>*p=front;front=front->link;deletep;return*this;}#include"stdafx.h"#include"LinkedWDiraph.h"////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////template<classT>boolLinkedWDiraph<T>::Exist(inti,intj)const{GraphNode<T>x;x.vertex=j;returnh[i].Search(x);}template<classT>LinkedWDiraph<T>&LinkedWDiraph<T>::Add(inti,intj,constT&w)returnAddNoCheck(i,j,w);}template<classT>LinkedWDiraph<T>&LinkedWDiraph<T>::AddNoCheck(inti,intj,constT&w){GraphNode<T>x;x.vertex=j;x.weight=w;h[i].Insert(0,x);e++;return*this;}template<classT>LinkedWDiraph<T>&LinkedWDiraph<T>::Delete(inti,intj){GraphNode<T>x;x.vertex=j;h[i].Delete(x);e--;return*this;}template<classT>intLinkedWDiraph<T>::InDegree(inti)constintsum=0;GraphNode<T>x;x.vertex=i;for(intj=1;j<=n;j++)//检查所有 (j,i)if(h[j].Search(x))sum++;returnsum;}template<classT>intLinkedWDiraph<T>::Begin(inti)// 返回第一个与顶点 i邻接的顶点{GraphNode<T>*x=pos[i].Initialize(h[i]);return(x)x->vertex:0;}template<classT>intLinkedWDiraph<T>::NextVertex(inti)//返回下一个与顶点 i邻接的顶点 {GraphNode<T>*x=pos[i].Next();return(x)x->vertex:0;}实习题目五【题目要求】 设计你的学校的平面图,至少包括 10个以上的景点(场所),每两个景点间可以有不 同的路,且路长也可能不同,找出从任意景点到达另一景点的最佳路径(最短路径)。要求: (1)以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路 径,存放路径长度等有关信息。(2)为来访客人提供图中任意景点相关信息的查询。( 3)为来访客人提供任意景点的问路查询, 即查询任意两个景点之间的一条最短路径。 (4)修改景点信息。实现提示: 一般情况下, 校园的道路是双向通行的, 可设计校园平面图是一个无向网。 顶点和边均含有相关信息。【代码实现】实习的代码再加以下代码:#include<String>usingnamespacestd;classLocation{friendvoidLoName(LocationL[]);friendvoidPath(ints,intn,intp[]);public:Location(void);virtual~Location(void);private:stringLocation_name;};#include"stdafx.h"#include"AdjacencyWDigraph.h"#include"Location.h"#include"AdjacencyWDigraph.cpp"#include"ChainIterator.h"#include<iostream>usingnamespacestd;voidPath(ints,intn,intp[]){LocationL[13];L[1].Location_name="校门";TOC\o"1-5"\h\zL[2].Location_name=" 图书馆 ";L[3].Location_name=" 工程楼 ";L[4]_Location_name="教一楼";L[5].Location_name=" 数理楼 ";L[6].Location_name=" 物探楼 ";L[7].Location_name=" 宿舍群 ";L[8].Location_name=" 弘毅堂 ";L[9].Location_name="大学生活动中心 ";L[10].Location_name="教三楼 ";L[11].Location_name="教二楼 ";L[12].Location_name="隧道口";intq[100];intm=0;intk=n;cout<<L[s].Location_name<<"->";while(p[n]!=0&&p[n]!=s){//cout<<L[p[n]].Location_name<<"<-";q[m]=p[n];m++;n=p[n];}m=m-1;for(;m>=0;m--)cout<<L[q[m]].Location_name<<"->";cout<<L[k].Location_name<<endl;}intmain(intargc,char*argv[]){AdjacencyWDigraph<int>A(10,100000);A.Add(1,2,4);A.Add(2,1,4);A.Add(1,5,10);A.Add(5,1,10);A.Add(2,3,1);A.Add(3,2,1);A.Add(3,4,2);A.Add(4,3,2);A.Add(3,5,3);A.Add(5,3,3);A.Add(5,10,10);A.Add(10,5,10);A.Add(4,6,8);A.Add(6,4,8);A.Add(6,7,1);A.Add(7,6,1);A.Add(7,8,1);A.Add(8,7,1);A.Add(7,9,3);A.Add(9,7,3);A.Add(8,9,2);A.Add(9,8,2);A.Add(8,10,4);A.Add(10,8,4);A.Add(9,10,5);A.Add(10,9,5);intB[40];intP[40];intm;cout<<"地大景点代号 :"<<endl;cout<<"*************************************************** 、'<<endl;coutvv"1:校门,2:图书馆, 3:工程楼,4:教一楼, 5:数理楼"<<endl;cout<<"6:物探楼, 7:宿舍群, 8:弘毅堂, 9:大学生活动中心 ,10:教三楼,11:教二楼 ,12:隧道口"<<endl;cout<<"*************************************************** 、'<<endl;coutvv"请输入你想执行操作的代号:"<<endl;cout<<"*************************************************** 、' <<endl;cout<<"1:查询地大学校景点, 2:查询两个景点之间的路径 "<<endl;cout<<"*************************************************** 、' <<endl;cin>>m;while(1){if(m!=1||m!=2){cout<<"您的输入有误,请重新输入 :"<<endl;cout<<"*************************************************** 、'<<endl;cout<<"1:查询地大学校景点, 2:查询两个景点之间的路径 "<<endl;cin>>m;}if(m==1||m==2)break;}while(1){if(m==1){coutvv”您想查询的景点代号:"vvendl;intk;cin>>k;switch(k){case1:cout<<'校门:地大正门,欢迎来到地大 "<<endl;break;case2:cout<v'图书馆:建设中,于 60周年校庆完工 "<<endl;break;case3:cout<<"工程楼:原先我们班的班主任在这里办公 "<<endl;break;case4:cout<<'教一楼:我们教学楼 "<<endl;break;case5:cout<v'数理楼:数理学院的教学楼,又叫基础楼 "<<endl;break;case6:cout<v'物探楼:也就是地空学院,貌似很牛 "<<endl;break;case7:cout<<"宿舍群:我们在 52#312"<<endl;break;case8:cout<<"弘毅堂:大多活动在此举办 "<<endl;break;case9:cout<<大学生活动中心:学生乐园 "<<endl;break;case10:cout<<"教三楼:我们自习学习的最好教学楼 "<<endl;break;case11:cout<<教二楼:阴气有点重咧 "<<endl;break;case12:cout<<"隧道口:通往北区的路口 "<<endl;break;default:cout<<"您的输入有误 "<<endl;}cout<<"*************************************************** 、'<<endl;cout<<"1:查询地大学校景点 ,2:查询两个景点之间的路径 "<<endl;cin>>m;while(1){if(m!=1||m!=2){cout<<"您的输入有误,请重新输入 "<<endl;cout<<"*************************************************** 、'<<endl;cout<<"1:查询地大学校景点, 2:查询两个景点之间的路径"<<endl;cin>>m;}if(m==1||m==2)break;if(m==2){coutvv"请输入你想查询路径的名字的代号 "<<endl;ints,n;cin>>s;cin>>n;cout?"最短路径为: "<<endl;A.ShortestPaths(s,B,P);Path(s,n,P);cout<<"*************************************************** 、'<<endl;coutvv"1:查询地大学校景点, 2:查询两个景点之间的路径 "<<endl;cin>>m;while(1){if(m!=1||m!=2){coutvv"您的输入有误,请重新输入 "<<endl;cout<<"**********************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级语文教案前
- 《红托竹荪鲜品贮运技术规程》征求意见稿
- 上海市县(2024年-2025年小学五年级语文)人教版期末考试(下学期)试卷及答案
- 一年级数学计算题专项练习1000题集锦
- 三年级语文上册教案
- 江苏省泰州市泰兴市2024-2025学年九年级上学期期中英语试卷(含答案解析)
- 【初中物理】《运动的描述》教学课件-2024-2025学年人教版(2024)八年级物理上册
- 护目镜市场需求与消费特点分析
- 拉力器市场发展预测和趋势分析
- 制药加工工业机器产品供应链分析
- 《企划案撰写》课件
- 2024年五粮液集团公司招聘笔试参考题库含答案解析
- 为什么要做好服务
- 工程地质调查规范
- 第15课《诫子书》课件(共31张)语文七年级上册
- 江苏省城镇污水处理厂纳管工业废水分质处理评估技术指南(试行)
- 华为经营管理-华为供应链管理(6版)
- 技术支持与售后服务
- 围墙监控施工方案
- 中铁Y工程公司基层员工薪酬体系的优化研究
- 14S501-2 双层井盖图集
评论
0/150
提交评论