欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    大数据结构课程设计迷宫求解Word文档下载推荐.docx

    • 资源ID:8523924       资源大小:276.54KB        全文页数:23页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    大数据结构课程设计迷宫求解Word文档下载推荐.docx

    1、(3)函数Push_SeqStack (PSeqStack S, DataType x) 此函数实现入栈操作。(4)函数Pop_SeqStack(PSeqStack S ,DataType *x) 此函数实现出栈操作。(5)函数Destory_Seqstack(PSeqStack *S) 此函数执行栈的销毁操作,释放内存空间。(6)函数mazepath(int mazen+2,item move,int x0,int y0) 此函数实现对迷宫问题的非递归算法求解。在求解过程中需调用上面定义的关于栈的一系列函数(栈的初始化,判空,入栈,出栈,栈的销毁),进而求得迷宫路径。(7)函数path(in

    2、t mazen+2,item move,int x,int y,int step)此函数实现对迷宫问题的递归算法求解。(8)函数print_way(int mazen+2,item move)此函数用于在递归算法求解迷宫后输出求解后的结果,即打印迷宫路径。(9)函数copy(int mazen+2,int msn+2) 此函数的作用是复制一下输入的原始迷宫序列,因为本程序是通过菜单选择求解迷宫的实现方式,将非递归算法和递归算法放在一起通过菜单选择实现,在调用完一种算法后,为保证调用另一种算法时原始迷宫序列未改变,所以需调用此函数来原始迷宫序列备份一下。(10)主函数main() 定义变量,实现

    3、迷宫的输入操作,通过菜单选择求解迷宫路径的实现方法,调用相关函数。(11)系统功能总体模块(a)栈的初始化(b)判栈空函数(c)入栈(d)出栈(e)销毁栈(f)非递归算法求解迷宫函数(g)递归算法求解迷宫函数(h)打印递归算法求解迷宫的路径函数(i)复制原始迷宫阵列函数(j)主函数五编码实现#includestdlib.h#define m 6#define n 8#define MAXSIZE 100item move4;PSeqStack Init_SeqStack() /栈的初始化 PSeqStack S; S=(PSeqStack)malloc(sizeof(SeqStack); if

    4、 (S) S-top=-1; return S;int Empty_SeqStack(PSeqStack S) /判栈空 if (S-top=-1) return 1; else return 0;int Push_SeqStack (PSeqStack S, DataType x) /入栈top=MAXSIZE-1) /栈满不能入栈 top+;dataS-top=x; int Pop_SeqStack(PSeqStack S ,DataType *x) /出栈 if (Empty_SeqStack ( S ) ) /栈空不能出栈 else *x=S-top;top-; void Destor

    5、y_Seqstack(PSeqStack *S) /销毁栈 if(*S) free(*S); *S=NULL; return;int mazepath(int mazen+2,item move,int x0,int y0) /非递归算法求解迷宫 DataType temp; int x,y,d,i,j; temp.x=x0; temp.y=y0; temp.d=-1; S=Init_SeqStack(); if(!S) printf(栈初始化失败!); return (0); Push_SeqStack (S, temp); while(!Empty_SeqStack(S) Pop_SeqS

    6、tack(S ,&temp); x=temp.x; y=temp.y; d=temp.d+1; while(d4) i=x+moved.x; j=y+moved.y; if(mazeij=0) temp.x=x; temp.y=y; temp.d=d; Push_SeqStack (S, temp); x=i; y=j; mazexy=-1; if(x=m&y=n) printf(n非递归算法求解的迷宫路径为(顺序为从出口到入口输出):n while(! Pop_SeqStack(S,& printf(%d %d) - ,temp.x,temp.y); nn.n Destory_Seqstac

    7、k(&S); return 1; else d=0; else d+; Destory_Seqstack(& return 0;int path(int mazen+2,item move,int x,int y,int step) /递归算法求解迷宫 int i; step+; mazexy=step; if(x=m& for(i=0;i4;i+) if(mazex+movei.xy+movei.y=0) if(path(maze,move,x+movei.x,y+movei.y,step) return 1; step-; mazexy=0;void print_way(int mazen

    8、+2,item move) /打印递归算法求解迷宫的路径 int i,j; if(path(maze,move,1,1,1)n找到路径的矩阵形式输出如下: for(i=0;m+2; for(j=0;j1)(%d %d) - ,i,j);无法找到路径!void copy(int mazen+2,int msn+2) /复制原始迷宫序列函数 for(int i=0; for(int j=0; msij=mazeij; void main() int mazem+2n+2; item move4; int i,j,Q; printf(请输入迷宫序列: for(j=0; scanf(%d,&mazei

    9、j); move0.x=0;move0.y=1; move1.x=1;move1.y=0; move2.x=0;move2.y=-1; move3.x=-1;move3.y=0; int mase1m+2n+2; copy(maze,mase1);*走迷宫*n1. 非递归形式走迷宫n2. 递归形式走迷宫n3. 退出n*求解方式*n while(1)n请选择(选择0退出): scanf(Q); switch(Q) case 1: mazepath(maze,move,1,1); break; case 2: print_way(mase1,move); case 0: exit(0);六运行与测

    10、试七总结在这个课程设计中,遇到的主要问题是选择了一种实现方法后,在选择另一种时不会输出结果,但是当我把这两个程序分开调试时都会出现结果,结果还是正确的,后来经过分析知道原来是调用完一种方法后,原来输入的迷宫序列可能被改变了,因此,又增加了一个复制原始迷宫序列的函数,对原始序列进行了保存,然后在调用时就出现结果了。通过调试这个程序,熟悉了迷宫的两种求法,在调试找错过程中也学会好多。构造n个城市连接的最小生成树一个地区的n个城市间的距离网,用Prim算法建立最小生成树,并计算得到的最小生成树的代价。1) 城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存

    11、在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)在本程序中,各个地区之间的距离网可以用邻接矩阵表示,在进行定义时表示出相应的权值,以便计算最小代价,当权值赋为999时,表示两城市之间无路径。然后用Prim算法建立最小生成树,进而在建立过程中可以计算得到的最小生成树的代价。首先,在用邻接矩阵存储图时,除了用一个二维数组存储用于表示顶点间相邻关系的邻接矩阵外,还需要用一个一维数组来存储顶点信息,另外,还有图的顶点数和边数。故可将其形式描述如下:type

    12、def struct char vertexsMaxVertexNum; int arcsMaxVertexNumMaxVertexNum; int vertexNum,edgeNum;MGraph;为实现普利姆算法求最小生成树,需设置一个辅助数组Closedge,里面存放一顶点为与已构造好的部分生成树的顶点间权值最小的顶点,边为某顶点与已构造好的部分生成树的顶点间的最小权值。定义形式如下: int adjvertex; int lowcost;ClosEdgeMaxVertexNum;(1)函数CreatGraph(MGraph *G)此函数用于创建邻接矩阵,用邻接矩阵来存储图,建立各个城市

    13、之间的关系。在建立过程中,给相应的边赋权值,以表示两城市之间的代价。注: 999代表两城市之间无路径。(2)函数MiniSpanTree_PRIM(MGraph *G,int u,ClosEdge closedge)此函数为普利姆函数,用于求最小生成树,在此过程中求出相应的权值,及最小生成树权值之和,用于表示连接各城市之间的最小代价。(3)主函数main() 定义变量,分别调用相应的函数。(4)系统功能总体模块(a)创建邻接矩阵CreatGraph(MGraph *G)的流程图如下:(b)构建最小生成树普利姆函数MiniSpanTree_PRIM(MGraph *G,int u,ClosEdg

    14、e closedge)流程图如下:(c)主函数main()流程图如下:#define MaxVertexNum 30#define INFINITY 3000void CreatGraph(MGraph *G) int i,j,k,n;请输入顶点数和边数: scanf(%d %d(G-vertexNum),&edgeNum);G-vertexNum;请输入第%d个顶点字符信息(共%d个):,i+1,G-vertexNum);%cvertexsi); getchar(); if(i=j) G-arcsij=0;arcsij=999; for(k=0;kedgeNum);k+)请输入边对应的顶点序

    15、号(共%d个):,G-i,&j);请输入此边的权值:n); G-arcsij=n;arcsji=n;图已成功创建!void MiniSpanTree_PRIM(MGraph *G,int u,ClosEdge closedge) int i,j,w,k; int count=0; if(i!=u) closedgei.adjvertex=u; closedgei.lowcost=G-arcsui; closedgeu.lowcost=0;vertexNum-1; w=INFINITY; if(closedgej.lowcost!=0 & closedgej.lowcostarcskjarcsk

    16、j; if(i! 输出构建的最小生成树为:%d-%d,%dn,i,closedgei.adjvertex,G-arcsiclosedgei.adjvertex); count+=G-arcsiclosedgei.adjvertex;此最小生成树的代价为:,count); MGraph *G; int u; ClosEdge closedge; G=(MGraph*)malloc(sizeof(MGraph); CreatGraph(G);输入构造最小生成树的出发顶点:u); MiniSpanTree_PRIM(G,u,closedge); 本程序相对来说不太难,但在调试过程中也遇到很多错误,其中也包括很多低级错误,还有内存溢出问题,不出现结果问题,通过在猜测出问题的地方加写printf输出提示,然后查找原因,发现了好多问题。最后找到原因,加以改正。通过这次的课程设计,使我加深了对相关知识点的理解掌握,同时在设计调试过程中,也发现了好多的不足之处,对学过的好多知识点都掌握的不够牢固,所以在用起来时经常会出错,还有许多因为粗心带来的问题,虽然在这次课程设计花费了好长时间,但总的来说,收获还是挺大的。


    注意事项

    本文(大数据结构课程设计迷宫求解Word文档下载推荐.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开