




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构报告(一)采用的数据结构人大交通指南程序的编写主要采用了2中数据结构。用2维数组即线性表来表示人大地图的位置,用栈进行路径的保存与调整。(二)算法伪码(尽量在20行以内)栈初始化;将起点坐标及到达该点的方向(设为-1)入栈;while (栈不空)栈顶元素=(x , y , d);出栈;求出下一个要试探的方向d+ ;while(还有试探方向) if(d方向可走)(x , y , d)入栈;求新点坐标(i, j ) ;将新点(i , j)切换为当前点(x , y);if ( (x ,y)=终点 ) 结束;else 重置d=0 ;else d+ ;(三)讨论有关复杂度人大地图简化如下:27631541东门:(5,8)2信息楼:(2,7)3逸夫会议中心:(5,6)4东区食堂:(6,6)5世纪馆:(6,4)6明德楼:(4,3)7西门:(4,1)我所选定的原操作:入栈和出栈操作,随着地图上点的个数n的增加,所需时间增加,时间复杂度:T(n)=O(f(n)(四)结语经过这次的编程实验,我对栈这种数据结构有了更深入的了解,但是在实践的过程中,还遇到了一些问题,比如对于复杂度的分析还存在一些问题,不知道选择什么原操作更适合于复杂度的分析;还有就是算法的问题,有些路径很复杂,需要绕一大圈才能从起点找到终点,不知道有没有更好的算法。APPENDIX:/ ruc_map.cpp : Defines the entry point for the console application./#include stdafx.h#include iostream.hstruct DataType /定义描述地图中当前位置的结构类型 int x; /x代表当前位置的行坐标 int y; /y代表当前位置的列坐标 int d; /d表示方向;struct Move /定义下一个位置的方向 int x; int y;struct LinkNode /链表结点 DataType data; LinkNode *next;/下面定义栈class stackprivate: LinkNode *top; /指向第一个结点的栈顶指针public: stack(); /构造函数,置空栈 stack(); /析构函数 void Push(DataType data); /把元素data压入栈中 DataType Pop(); /使栈顶元素出栈 DataType GetPop(); /取出栈顶元素 void Clear(); /把栈清空 bool IsEmpty(); /判断栈是否为空,如果为空则返回1,否则返回0;stack:stack() /构造函数,置空栈 top=NULL;stack:stack() /析构函数void stack:Push(DataType x) /把元素data压入栈中 LinkNode *TempNode; TempNode=new LinkNode; TempNode-data=x; TempNode-next=top; top=TempNode;DataType stack:Pop() /使栈顶元素出栈 DataType Temp; LinkNode *TempNode; TempNode=top; top=top-next; Temp=TempNode-data; delete TempNode; return Temp;DataType stack:GetPop() /取出栈顶元素 return top-data;void stack:Clear() /把栈清空 top=NULL;bool stack:IsEmpty() /判断栈是否为空,如果为空则返回1,否则返回0 if(top=NULL) return true; else return false;void PrintPath(int maze1010, stack p)/显示地图路径cout地图路径为n;int a,b;DataType data;while(!p.IsEmpty()data=p.Pop();a=data.x;b=data.y;switch(data.d)case 0: mazeab=5; break;case 1: mazeab=6; break;case 2: mazeab=7; break;case 3: mazeab=8; break;default:coutendl;for(int i=0;i10;i+)for(int j=0;j10;j+)switch(mazeij)case -1: coutO ; break;case 0: coutO ; break;case 1: cout* ; break;case 5: cout ; break;case 6: cout ; break;case 7: cout ; break;case 8: cout ; break;default:coutendl;coutendl;bool Mazepath(int maze1010,DataType a,DataType b)/寻找maze中从a到b的路径int n=0;Move move4=0,1,1,0,0,-1,-1,0;stack p; /定义栈p,存探索路径过程 DataType Temp; int x,y,d,i,j;Temp.x=a.x;Temp.y=a.y;Temp.d=-1;p.Push(Temp);n+;while(!p.IsEmpty()Temp=p.Pop();n+;x=Temp.x; y=Temp.y; d=Temp.d+1;while(d=1&j=1&i=8) if(mazeij=0) Temp.x=x; Temp.y=y; Temp.d=d; p.Push(Temp); n+; x=i ; y=j ; mazexy= -1 ; if(x=b.x)&(y=b.y) PrintPath(maze,p);coutnendl; return 1; else d=0;else d+;else d+;void main()int maze1010=1,1,1,1,1,1,1,1,1,1, 1,0,0,0,0,0,1,1,0,1, 1,0,1,1,0,0,0,0,0,1, 1,0,1,1,0,0,0,0,0,1, 0,0,0,0,0,1,1,0,0,1, 1,0,0,1,0,0,0,0,0,0, 1,0,0,1,0,0,0,0,0,1, 1,0,0,0,0,0,1,0,0,1, 1,0,0,0,0,0,1,0,0,1, 1,1,1,1,1,1,1,1,1,1;/0表示通,“1”表示不同for(int i=0;i10;i+)for(int j=0;j10;j+)if(mazeij=0)coutO ;else cout* ;coutendl;int s,d;/s=起点,d=终点cout请输入您现在所在的位置(1.东门 2.信息楼 3.逸夫会议中心 4.东区食堂 5.世纪馆 6.明德楼 7.西门):s;cout请输入您想去的位置(1.东门 2.信息楼 3.逸夫会议中心 4.东区食堂 5.世纪馆 6.明德楼 7.西门):d;DataType Start,Des,Temp;switch(s)case 1: Start.x=5; Start.y=8; break;case 2: Start.x=2; Start.y=7; break;case 3: Start.x=5; Start.y=6; break;case 4: Start.x=6; Start.y=6; break;case 5: Start.x=6; Start.y=4; break;case 6: Start.x=4; Start.y=3; break;case 7: Start.x=4; Start.y=1; break;default:coutendl;switch(d)case 1: Des.x=5; Des.y=8; break;case 2: Des.x=2; Des.y=7; break;case 3: Des.x=5; Des.y=6;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海市普陀区教育学院附属学校实习教师招聘考前自测高频考点模拟试题附答案详解(突破训练)
- 2025海南保亭农水投资有限公司第一批人员(代农水投公司发布)模拟试卷附答案详解(突破训练)
- 2025江苏苏州丰倍生物科技股份有限公司招聘10人模拟试卷及答案详解(名校卷)
- 2025河北邯郸市肥乡区选聘农村党务(村务)工作者100人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025辽宁鞍山立山区教育局招聘2人考前自测高频考点模拟试题及答案详解(必刷)
- 2025徽商银行宣城分行社会招聘模拟试卷及完整答案详解1套
- 2025江苏南通市海门区卫健系统招聘81人考前自测高频考点模拟试题及1套完整答案详解
- 兴业银行兰州市西固区2025秋招笔试英文行测高频题含答案
- 民生银行重庆市璧山区2025秋招群面案例总结模板
- 民生银行舟山市定海区2025秋招笔试综合模拟题库及答案
- 《电子商务法律法规》课程标准
- 医院关于印发《即时检验临床应用管理办法》的通知
- EPC模式承包人建议书与承包人实施方案
- 主动防护网施工方案
- 三年级下册书法练习指导全册教案(湖南美术出版社)
- GB/T 17880.5-1999平头六角铆螺母
- 2023年陕西省直和西安市接收军转干部划分条件
- 客诉客退产品处理流程
- 自来水厂操作规程手册范本
- 中职实用美术设计基础 2基础教学课件
- 体育与健康人教版四年级-足球-脚背正面运球教案
评论
0/150
提交评论