欢迎来到天天文库
浏览记录
ID:3956640
大小:352.05 KB
页数:15页
时间:2017-11-26
《停车场管理系统实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、华北水利水电学院数据结构实验报告2011~2012学年第二学期2011级计算机专业班级:****学号:*****姓名:****-实验二栈和队列及其应用一、实验目的:1.掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。2.掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。二、实验内容:1.链栈的建立、入栈、出栈操作。2.环形队列的建立、入队、出队操作。3.停车场管理。设停车场内只有一个可停放n辆汽车
2、的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进
3、行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表(带头结点)实现。需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。设n=2,输入数据为:(‘A’,1,5)
4、,(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束。三、实验要求:1.C/C++完成算法设计和程序设计并上机调试通过。2.撰写实验报告,提供实验结果和数据。3.写出算法设计小结和心得。四、程序源代码:1.#include#includetypede
5、fstructstnode{intdata;stnode*next;}LinkStack;//创建一个栈头结点,无头结voidInitStack(LinkStack*&ls){ls=NULL;}//进栈,相当于头插法voidPush(LinkStack*&ls,intx){LinkStack*p;p=(LinkStack*)malloc(sizeof(LinkStack));p->data=x;p->next=NULL;p->next=ls;ls=p;}//出栈voidPop(LinkStack*&ls){if(ls==NULL)return;LinkSta
6、ck*p;intx;p=ls;while(p){x=p->data;ls=p->next;cout<>num;if(num==000)break;Push(ls,num);i++;}cout<<"进栈成功!!"<7、idmain(){LinkStack*ls,*p;CreatStack(ls);Pop(ls);}2.#include#defineQueueSize100typedefstructsqqueue{intdata[QueueSize];intfront,rear;}SqQueue;//初始化队列voidInitQueue(SqQueue&qu){qu.rear=qu.front=0;}//进队intEnQueue(SqQueue&sq,intx){if((sq.rear+1)%QueueSize==sq.front)return0;s8、q.rear=(sq.rear+1)%QueueSi
7、idmain(){LinkStack*ls,*p;CreatStack(ls);Pop(ls);}2.#include#defineQueueSize100typedefstructsqqueue{intdata[QueueSize];intfront,rear;}SqQueue;//初始化队列voidInitQueue(SqQueue&qu){qu.rear=qu.front=0;}//进队intEnQueue(SqQueue&sq,intx){if((sq.rear+1)%QueueSize==sq.front)return0;s
8、q.rear=(sq.rear+1)%QueueSi
此文档下载收益归作者所有