资源描述:
《数据结构实验报告停车场》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数据结构》实验报告1.上机题目利用栈和队列实现停车场的问题。2・需求分析功能要求:设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车俩到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满门辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它Z后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车俩再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的
2、时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。开发环境:win7或winXP操作系统下的VC++6.0。(1)参数输入格式:以止整数形式输入车牌号和时间,以字符形式输入客户所要进行的操作;(2)参数的合法取值范围:0—32767之间;(3)输出的格式:以正整数格式输出;测试数据:1.E001122.E002133.E003144.L0011450(1)本程序分四个模块:一,构造栈和队列的部分;二,车辆到达的处理;三,车辆离开的处理;四,主函数main函数。(2)三个部分调用顺序如下:(1)数据的逻辑定义:ADTQue
3、ue{数据对象:D={cainum^int
4、i=l,2,3,10}数据关系:Rl={}
5、ai-1,aiWD,,i二1,2,・・・n约定其中al端为队列头,an端为队列尾。(2)基本操作:InitStack(q):初始化一个空栈InitQueue(s);初始化一个空队列Push(p,c);进栈EnterQueue(s,carnum,arrtime);进队Pop(p,c);出栈DeQueue(s,w);出队(3)程序的流程图4.详细设计(1)利用结构休定义栈和队列〃定义栈,模拟停车场typcdcfstructcarin
6、f{intcarnum;//汽车的车牌号intarrtime;//汽车到达吋间}carnode;tvpedefstruct//停车场{carnode*top;//停车场的栈顶carnode^bottom;//停车场的栈底intcarsizc;//停车场的车位}carstack;〃队列,模拟便道typcdcfstructcarinfl//利用链表存储{intcarnum;//汽车车牌号intarrtime;//汽车到达Cl寸间structcarinfl*next;}^car;tvpedefstruct//便道{carfront;//队
7、列的队头指针carrear;//队列的队尾指针intlen;//队列的长度}carqueue;(2)车到达停车场吋的函数intarrival(carstack&p,carqueiie&s)//车辆进入停车场时的一系列判断(3)离开停车场时的函数intLeave(carstack&p,carstack&pl,carqueue&s)//对离站车辆的处理(4)输出结果的主要过程://车从停车场屮出if(flag二二0){if(s.len!=0){DeQueue(s,w);m.arrtime=letime;m.carnum=w->carnu
8、m;Push(p,m);free(w);printf(z,车牌号为%d的车已由便道进入停车场〃,m.carnum);printf(〃停车费为%d,占用车位数为%d/z,money,p.carsize);}else{printf(,z停车场不存在牌号为9紀的车〃,number);5.调试分析(1)调试过程屮主要遇到的问题:开始写代码的时候,由于没有仔细分析各个函数Z间的调用关系,导致整个程序十分混乱,结果一直出错。后來,画了程序流程图,仔细分析各个函数的功能以及调用顺序,及吋解决了这个问题。(2)核心算法的时空复朵度:1.
9、arrival函数在车进入时复杂度为0(n);2.Leave函数在输出结果时时间复杂度为:0(n)o(3)体会:这次实验在开始吋绕了很大的弯路,导致浪费很多时间,这为以后,做实验打下基础,在每次写实验之前,应该先做仔细的分析,再动手去做,这样就会事半功倍。6使用说明1.输入车牌号时格式为整数型式,离开和到达时间均为整数型式;2.输出的费用以及信息均为整数型式。7测试结果测试数据:1.E001122.E002133.E003144.L0011450测试结果如下图所示:>•D:作业总礙结构p3fldnglotlDebugc3r.
10、exe*回0停车场管理程序―-M"--M$$$$$$$$$$$$$$$$$$$$E汽车进车场L汽车出车场0退岀程序$$$$$$$$$$$$$$$$$$$$$$$$$*—*—*—*—*峨1的«o00场轻,0雙第丄舂在