大数阶乘数据结构算法课程设计_第1页
大数阶乘数据结构算法课程设计_第2页
大数阶乘数据结构算法课程设计_第3页
大数阶乘数据结构算法课程设计_第4页
大数阶乘数据结构算法课程设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

#////////////////////////////////////////////////////////////////////////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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论