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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实习报告文档格式.docx

1、删除函数添加函数结束其他【详细设计表示】 主函数开始时要求用户输入停车场的初始大小,然后对进入的车辆进行管理,如果是进入,调用添加函数,此函数中定义的规则是如果停车场如果没有满就加到停车场栈中,如果停车场已经满了,就添加到走道队列中。处理完添加函数后while循环调用次过程。同理,如果是车辆要出去,就调用删除函数,如果删除后走道上有车在等待车位就将走道上的车辆根据先进先出的规则压到栈中。处理完删除函数之后也while循环调用次过程。只有当用户输入结束的时候此循环才会结束。3.编码 1.输入A表示的是添加,输入D表示删除,输入E表示结束,那么要是用户不小心输入了其他的一个字母怎么办呢 在whil

2、e循环中最开始进行判断的并不是输入的是否为ADE而是输入的是不是不是ADE中间的任何一个,这时候令输入无效,用户需重新输入。此时的输入作废。2.添加的时候如果是栈没有满,这时应该添加到栈中去,储存进入时间和车号,但是如果只是停在走道上需不需要这些数据呢这里要不要抖没有关系,因为在这里如果要了的话在后面闪出部分走道上的车子重新进入的时候就重新记录一遍车子的进入时间,避免在走道上的时间也要被收费。3.删除的时候将此时的时间减去车子这个数据对象的进入时间就是时间差,根据规定的单价计算停车费用。但是如果走道上有车子的时候他的进入时间呢处理时一定的,一定要更新,否则车子在走道上的时间也总算在停车场的时间

3、这是不对的。4.如果在停车场中要出去的车是先进来的车子,则表示比他后来的车要先出去那此时的算法呢答案是也将前面的车先存在一个栈中,等向后面的车子先出去后在出栈重新压栈。4.程序算分分析【运行结果】5.小结【改进设想】用类的思想,本题我还是沿用的过程思想,对各个过程处理好就出了结果,尽管结果没有错,但是和面向对象的思想不是太符合,所以希望可以用个停车场这一个类来处理问题。【体会】有时候在调试的时候的很小的一个结果和预想的不符就是很大的思想问题,比如我调试的时候最后一步有时候钱算的不对,就是添加删除时的时间没有处理正确,所以,错误不在小。要知道为什么会出这个错。编程的时候重要的是提前把思路理好。6

4、.附录class Car public: int carno; arno=i; */ while (true) coutsitua; if (situa!=A & situa!DE) cout if (situa=车牌号:no;进/出 站时间:tim; if (index=2) cout位置:index else车道上 carno.intime=tim; carno.carno=no; index+; ntime)应缴费用:(tim-(carno.intime)*2Telei.mobilnumberTelei.phonenumberTelei.email; ; for (int j=0;jyo

5、rn; if (yorn= int tempnum=0; int nmo=0; TelNumber here100; while (tempnumtotal) if (Teletempnum!=menber0) (Teletempnum,delete_member); herenmo=delete_member; outsetw(5)leftsetw(20)right setw(30) nmo+; if (Teletempnum=menber0) tempnum+; 求规格说明书假定文本文件 中是我校所有参加南望山庄二期挑房职工的信息,请编写程序,读 出文件中的内容,再按挑房的先后次序排队后将

6、排序号和姓名以文本方式存放到文件 中。 排队原则: 先按职称排,同职称按分房工龄排,同工龄按年龄排。【设计思想】 由于测试数据是在文本中的数据,所以处理起来需要用到输入输出流。将已经给好的.中的数据在内存中处理完毕之后就重新输出到另外一个中。【详细设计】 建立流对象两个,第一个是输入流,一个是输出流。将给输数据流读到内存中,调用排序函数,这里不能用选择排序,因为选择排序的话要写三个不同的找到最大值函数。根据三个不同的因素来排。所以选择冒泡排序。拍完之后在输出就行了。1.开始的时候建立流对象忘记了。看以前的数的时候也不知道,因为以前这里也没有学通。现在做到时候是叫同学叫我怎么做流的技巧的。2.排

7、序算法。开始的时候嫌冒泡太麻烦。要写好多。想找个简单的但是后来发现就这个用的方便。其他的都需要重载函数。太麻烦。3.调整间距,在用了一个left或right之后只能管一下,在下一个tempb-1.number) tempwork=tempb; tempb=tempb-1; tempb-1=tempwork; umber=tempb-1.number) & (tempb.workagetempb-1.workage) umber=tempb-1.number & tempb.workage=tempb-1.workage & tempb.agetempb-1.age)int main(int a

8、rgc, char* argv) ifstream in(workeri.numberworkeri.workageworkeri.age; bubsort(worker,505); for (int index=0;505;index+) outsetw(7)workerindex.namesetw(8)workerindex.numberworkerindex.workagesetw(9)workerindex.age coutOK! return 0;实习题目四“火烧连营”是三国演义中的著名典故之一广为流传,假定文本文件 是火烧连营中的 军营分布图,每个字符 A 代表一个营帐,营帐是可燃

9、物,其他字符代表不可燃的空白地段, 文件共有 40 行 70 列,请你编写程序,读入该文件的内容,再从键盘输入任意点的 x 和 y 值(x70,y40 )作为着火点,“火烧连营”后,被燃烧的营帐标上字符X,并把整个结果 输出到文件 中。 基本思想:从着火点位置开始,按四连通思想上下左右寻找其邻居点。 开辟一个堆栈,先将着火点压栈,然后重复一下操作:栈顶点出栈并标记X ,同 时将符合被燃烧条件的邻居点入栈。,直到栈空为止。 有效 无效 首先将c1中的数据独到内存中,在内存中处理是否火烧连营,然后根据输入的坐标,如果坐标显示的是A的话就将连在一起的A全部变成X。具体做法是做一个栈。将A压倒栈里面去

10、,出栈顶。压入的后边是A 的坐标,在重复以上做法。如果是就不处理。等栈空了之后就结束。 1.二维数组的赋值。因为数据是从c1里面获取的,需要一个空的二维空间来存储他一遍再内存中可以使用。所以需要开辟一个动态的二维数组,静态的不行就是因为需要初始化。这里声明的时候。二维数组的分两步,第一步是声明以为的指针数组,在声明以为数组。 2.行列出错,说的是40行70列,但是我开始声明的时候总是反了,结果内存总出问题。后来改正了。这题最大的收获就是二维数组的声明。以前总是声明的以为数组,很熟练,但是到了二维数组的时候就不是一样的声明方法了。所以积累了知识。void getfire(char *temp_A

11、, LinkedStack temp_stake,int temp_x,int temp_y) char temp=X int xx; 求规格说明书 需要在某个城市的 n 个居民区之间铺设煤气管道,则在这 n 个居民区之间只要铺设 n-1 条管道即可。假设任意两个居民区之间都可以架设管道,但由于地理环境的不同,所需经费 不同。选择最有的施工方案能使总投资尽可能少,这个问题即为求网的“最小生成树”。用Kruskal算法,找到所有的最短边,构成通路。从最开始输入的时候的起点找到起点的最短通路,再将通道一一输出。输入边和权储存在边权数组中排序比安全数组深度优先搜索输出结果 从main函数入口。得到丁

12、点个数,建立这么多个顶点的有向图,再调用输入函数得到各个点和边的权值。得到之后将权值储存在边的数组中,排序。然后经过深度优先,得到串联的有向图解,根据需求输出方案并且得到耗费。 1.最难的是深度优先搜索函数,上次实习的时候是将深度优先和宽度优先在一个函数中实现的,但是这次是讲深度优先拆成几个函数的符合而成。需要深刻知道reach数组和result数组的作用。 2.判断环路是一个难点。这里的判断方法是终点的reach不等于一。开始的时候始终不知道怎么做。上网查询了不少。但是有意义的没多少。后来半猜半试的做的。如果存在一个终点同时他又是这条线路中的另一个终点说明有环路了,这一点是需要判断的。 3.

13、路径查找算法。因为有n个点,所以最短路径必然只有n-1个边所以路径查找算法表示根据点的个数定量的找到边的个数。所以需要对边排序。事先知道最短的那几条边可不可以满足。【测试数据】 7 8 4 10 4 5 这题和数据结构实习的最后一题类似,需要用到深度优先搜索和图的知识。带有智能的味道。做起来比较麻烦。任何一个小地方出现问题都会带来意想不到的错误,调试时很关键的一步,不仅要知道函数是什么意思,来呢每一个变量都要知道是什么意思。很复杂。void Bubsort(Edge x,int& n) Edge edge; for (int i=n-1;i0;i-) for (int j=0;i; if (x

14、j.weight xj+1.weight) edge=xj; xj=xj+1; xj+1=edge;templateclass DGraph T *a; oint_start,reach,1); oint_end!=1) resultlabel=binaryedgej; label+; int sum=0;方案: for (int a=0;a()-1;a+) sum+=resulta.weight;建立管道 resulta.point_startresulta.point_end 该管道的耗费为:resulta.weight总耗费:sumvoid DGraph:DFS(int i,T* RC,int label)/从i深度优先搜索。调用begin和next完成最少耗费。Kruskal算法 RCi=label; int u=Begin(i); while (uNumber_of_Vertice+1) if (RCu!=label) DFS(u,RC,label); u=Next(i);

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

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