1、1.以输出流显示校园的界面2.以图的形式存储校园景点3.以循环算法运行操作界面4.以函数调用实现导游功能4.使用说明1.运行时显示校园景观图,同时显示选择菜单2.选择菜单:1.地点介绍 2.最短路径 3.结束 “请选择功能”3.地点介绍:出现景点选择:A.操场 B.偏门 C.图书馆 D.大门 E.食堂 F.诚智楼 G.博学楼 H.创新楼 I.海天楼 J.明德楼 请选择地点(选择加回车即能查询景点信息)4.最短路径:出现“输入起点位置”,输入后即出现“输入终点位置”(输入加回车即显示两景点的最短路径)5.测试结果1.运行界面2.地点介绍3.最短路径6.附录1.校园景观图实现函数:void vie
2、wshow() cout 东方学院实景图endl; A操场-B偏门 / C图书馆-D大门 E食堂- / / F诚智楼-G博学楼-H创新楼 / / I海天楼-J明德楼2.建立图函数:#includeSeqList.hSeqQueue.hconst int MaxVertices=10;const int MaxWeight=10000;class AdjMWGraphprivate: SeqList Vertices;/顶点信息的线性表 int EdgeMaxVerticesMaxVertices; int numOfEdges;public: AdjMWGraph(const int sz=M
3、axVertices); int GraphEmpty( )const return Vertices.ListEmpty( ); int NumOfVertices(void) return Vertices.ListSize( ); int NumOfEdges(void) return numOfEdges; VerT GetValue(const int i); int GetWeight(const int v1,const int v2); void InsertVertex(const VerT &vertex); void InsertEdge(const int v1,con
4、st int v2,int weight); void DeleteVertex(const int i); void DeleteEdge(const int v1,const int v2); int GetFirstNeighbor(const int v); int GetNextNeighbor(const int v1,const int v2); void DepthFirstSearch(const int v,int visited,void visit(VerT item); void BroadFirstSearch(const int v,int visited,voi
5、d visit(VerT item); void DepthFirstSearch(void visit(VerT item); void BroadFirstSearch(void visit(VerT item);AdjMWGraph:AdjMWGraph(const int sz) for(int i=0; isz; i+) for(int j=0; j j+) if(i = j) Edgeij=0; else Edgeij=MaxWeight; numOfEdges=0;VerT AdjMWGraph:GetValue(const int i) if(iVertices.ListSiz
6、e() cerr参数i越界出错! exit(1); return Vertices.GetData(i);int AdjMWGraph:GetWeight(const int v1,const int v2) if(v1Vertices.ListSize()|v2参数v1或v2越界出错! return Edgev1v2;void AdjMWGraph:InsertVertex(const VerT &vertex) Vertices.Insert(vertex,Vertices.ListSize();InsertEdge(const int v1,const int v2,int weight
7、) Vertices.ListSize() Edgev1v2=weight; numOfEdges+;DeleteVertex(const int v)iVertices.ListSize();i+)j0 &EdgeijMaxWeight) Edgeij=MaxWeight; numOfEdges-; Vertices.Delete(v);DeleteEdge(const int v1,const int v2)Vertices.ListSize()|v1=v2)参数v1或v2出错! Edgev1v2=MaxWeight; numOfEdges-;GetFirstNeighbor(const
8、int v) if(vVertices.ListSize( )参数v1越界出错! for(int col=0;col0&EdgevcolMaxWeight) return col; return -1;GetNextNeighbor(const int v1,const int v2) for(int col=v2+1; colEdgev1colMaxWeight)return col;DepthFirstSearch(const int v,int visited,void visit(VerT item) visit(GetValue(v); visitedv=1; int w=GetFi
9、rstNeighbor(v); while(w!=-1) if(!visitedw)DepthFirstSearch(w,visited,visit); w=GetNextNeighbor(v,w); BroadFirstSearch(const int v,int visited,void visit(VerT item) VerT u,w; SeqQueue queue;/定义队列queue queue.QInsert(v); while(!queue.QueueEmpty() u=queue.QDelete(); w=GetFirstNeighbor(u); while(w! if(!visitedw) visit(GetValue(w); visitedw=1; queue.QInsert(w); w=GetNextNeighbor(u,w);DepthFirstSearch(void visit(VerT item) int *visited=new intNumOfVertices();NumOfVertices();i+)visitedi=0; for(i=0;visitedi)DepthFirstSearch
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1