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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

测绘软件实习报告文档格式.docx

1、 else return false; bool GraphFull()/判断图是否为满 if(numVertices=maxVertices|numEdges=maxVertices*(maxVertices-1)/2) return true; else return false;int NumberOfVertices()/返回当前顶点数 return numVertices; int NumberOfEdges()/返回当前边数 return numEdges; char getValue(int i)/取顶点i的值,i不合理返回0 return i=0&i=numVertices ?

2、 VerticesListi : NULL; int getWeight(int v1,int v2)/取边(v1,v2)上的权值 return v1!=-1&v2!=-1 ? Edgev1v2 : 0; int getFirstNeighbor(int v);/取顶点v的第一个邻接顶点 int getNextNeighbor(int v,int w);/取v的邻接顶点w的下一邻接顶点 bool insertVertex(char vertex);/插入顶点vertex bool insertEdge(int v1,int v2,int weight);/插入边(v1,v2),权为weight

3、 bool removeVertex(int v);/删去顶点v和所有与它相关联的边 bool removeEdge(int v1,int v2);/在图中删去边(v1,v2) int getVertexPos(char vertex)/给出顶点vertex的位置,如果该顶点不在图内则返回-1 for(int i=0;numVertices;i+) if(VerticesListi=vertex) return i; return -1; int mini();/求图中所有边的最小权值 bool input();/输入函数 bool output();/输出函数 void kruskal();

4、/kruskal算法 void prim();/prim算法protected: int maxVertices;/图中最大顶点数 int numEdges;/图中当前边数 int numVertices;/图中当前顶点数 private: char *VerticesList;/顶点表 int * *Edge;/邻接矩阵 int visit50;/便利时的辅助工具 primnode closeedge50;/为实现prim 函数的辅助结点;KJL_Graphmtx:KJL_Graphmtx(int sz)/构造函数 maxVertices=sz; numVertices=0; numEdge

5、s=0; int i,j; VerticesList=new charmaxVertices;/创建顶点表数组 Edge=(int * *)new int *maxVertices;/创建邻接矩阵数组 for(i=0;maxVertices; Edgei=new intmaxVertices;for(i=0;i+)/邻接矩阵初始化 for(j=0;j0&EdgevimaxWeight)return i; return -1;getNextNeighbor(int v,int w)/给出顶点v的某邻接顶点w的下一个邻接顶点的位置,如果找不到,则函数返回-1w! for(int i=w+1;max

6、Weight) return i;bool KJL_Graphmtx:insertVertex(char vertex)/插入顶点vertex if(numVertices=maxVertices) return false;/顶点表满,不插入 VerticesListnumVertices+=vertex; return true;insertEdge(int v1,int v2,int weight)/插入边(v1,v2),权为weightif(v1!v1numVertices&v2Edgev1v2=maxWeight)/插入条件(?) Edgev1v2=Edgev2v1=weight;

7、numEdges+; return true; else return false;removeVertex(int v)/删去顶点v和所有与它相关联的边 if(v=numVertices)return false;/v不在图中,不删除 VerticesListv=VerticesListnumVertices-1;/顶点表中删除该结点i+)/减去与v相关联的边数 if(EdgeivEdgeiv-1&v2Edgev1v2Edgev1v2maxWeight) Edgev1v2=Edgev2v1=maxWeight;/删除边(v1,v2) numEdges-;input() int i,j,k,n

8、,m; char e1,e2; int weight; coutnm;/输入顶点数n和边数m请输入顶点的值:n;i+)/依次输入顶点的值 cine1; this-insertVertex(e1); i=0; while(im) coute2weight;/输入端点信息 j=this-getVertexPos(e1);/查顶点号 k=this-getVertexPos(e2); if(j=-1|k=-1) coutinsertEdge(j,k,weight); i+; output()/输出函数 int i,j,n,m; int w; n=this-NumberOfVertices(); m=t

9、his-NumberOfEdges();顶点的个数为:n边的条数为:mgetWeight(i,j); if(wwgetValue(i); e2=this-getValue(j);(e1,e2closeedgej.lowcost) min=j; i=min;cout包括边(closeedgei.begvexcloseedgei.endvex; return i;/图的深度优先搜索函数/void DFS(KJL_Graphmtx & G,int v,bool visited);/先声明函数,后使用 G,char & v)/从顶点v出发,对图G进行深度优先遍历的主要过程 int i,loc,n=G.

10、NumberOfVertices();/取图中顶点的个数 bool * visited=new booln;/创建辅助数组i+)/初始化辅助数组visited visitedi=0; loc=G.getVertexPos(v);/取得v结点在图中的位置 DFS(G,loc,visited);/从顶点0开始深度优先搜索 delete visited; G,int v,bool visited)/从顶点v出发,对图G进行深度优先遍历的子过程/从顶点位置v出发,以深度优先的次序访问所有可读入的尚未访问过的顶点。/算法中用到一个vistied,对已访问过的顶点做访问标记。 coutG.getValue

11、(v)/访问顶点v visitedv=1;/顶点v作访问标记 int w=G.getFirstNeighbor(v);/找v的第一个邻接顶点w while(w!=-1)/若邻接顶点w存在 if(visitedw=0) DFS(G,w,visited);/若w未被访问,递归访问顶点w w=G.getNextNeighbor(v,w);/取v排在w后的下一个邻接顶点 /图的广度优先搜索函数/void BFS(KJL_Graphmtx G,char v)/从顶点v出发,以广度优先的次序横向搜索图,算法中使用了一个队列。 int i,w,n=G.NumberOfVertices();/去图中的定点个数

12、 bool *visited=new booln;/用来记录顶点是否被访问过,被访问值为1,为被访问值为0i+)/初始化 visitedi=0;int loc=G.getVertexPos(v);/取顶点v的位置号G.getValue(loc) visitedloc=1;/做已访问标记 KJL_Queue Q;/定义一个辅助队列Q.EnQueue(loc);/顶点进队,实现分层访问 while(!Q.IsEmpty()/循环访问所有结点,判断队列是否为空Q.DeQueue(loc);/从队列中退出顶点loc w=G.getFirstNeighbor(loc);/找顶点loc的第一个邻接点w w

13、hile(w!=-1)/若邻接点w存在 if(visitedw=false)/若未被访问coutG.getValue(w)/访问顶点wvisitedw=1;/标记w已经被访问Q.EnQueue(w);/顶点w进队列w=G.getNextNeighbor(loc,w);/找顶点loc的下一个邻接顶点,重复检测v的所有邻接顶点 delete visited;/kruskal函数的实现/void KJL_Graphmtx:kruskal() int a,b,k=0; int min=maxWeight; int Edge12020; for (int m=0;m+) visitm=m;/每一个顶点属

14、于一颗树 for (int i=0; for(int j=0; Edge1ij=Edgeij; while (knumVertices-1) min=maxWeight; for (int j=0; if (Edge1ijmin) a=i; b=j; min=Edge1ij; if (visita!=visitb)VerticesListaVerticesListbgetVertexPos(u); visiti=1; closeedgej.begvex=u; closeedgej.endvex=VerticesListj; closeedgej.lowcost=Edgeij; for (int

15、 m=1; int n=mini(); visitn=1; closeedgen.lowcost=maxWeight; for (int p=0;pp+)visitp) if(Edgepncloseedgep.lowcost) closeedgep.lowcost=Edgepn; closeedgep.begvex=VerticesListn; 实验结果实验体会经过这次实验让我更深刻的理解了C+类的的结构,能够对二维数组的动态开辟空间和释放空间有了更深刻的理解,对图的遍历及构建最小生成树也有了深刻的体会。总之,在这次试验中,学到了许多,也提高了自己的编程能力。实验二、快速排序算法的实现 选取表

16、中一个元素rk(一般选第一个元素),令x=rk称为控制关键字,用控制关键字和无序区中其余元素关键字进行比较 设置两个指示器i,j,分别表示线性表第一个和最后一个元素位置 将j逐渐减小,逐次比较rj与x,直到出现一个rjx,然后将ri移动到rj位置 重复上述过程,知道i=j位置,并将x移动到rj位置,此时线性表以x为界分割成两个子区间 实现快速排序功能const maxSize=100;int partition(int data,int first,int end)/在实现快速排序函数时要用,这是快速排序的一趟算法 int i=first; int j=end; int temp;j) whi

17、le(ij&datai=dataj) /向右扫描 j-; if(idatai;output() QuickSort() int pivot; if(firstend) pivot=partition(data,first,end); end=pivot-1; QuickSort(); first=pivot+1; first=0;void main() KJL_CSort biao; biao.input();快速排序前的顺序: biao.output(); biao.QuickSort();快速排序后的顺序:快速排序法,是众多排序方法中的一种,这种方法的优点在于它的比较次数少,每经过一趟比较,都可以把一个无序的数组分成两个部分,左边的部分全部小于(大于)右边的部分。在实现这个算法过程中,采用的时递归调用的方式。这让我对递归又有了更深层次的理解,对数组的排序,也不仅仅局限于冒泡,选择排序,在快速排序的基础上设计了以个快速排序类。实验三、矩阵类的设计与实现 按照上述矩阵类的设计,完成相应函数的编码 对于矩阵数据的存储,可以

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

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