停车场管理系统实验报告汇总建筑施工组织_高等教育-大学课件.pdf
《停车场管理系统实验报告汇总建筑施工组织_高等教育-大学课件.pdf》由会员分享,可在线阅读,更多相关《停车场管理系统实验报告汇总建筑施工组织_高等教育-大学课件.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 华北水利水电学院 数据结构 实验报告 2011 2012 学年 第 二 学期 2011 级 计算机 专业 班级:*学号:*姓名:*-实验二 栈和队列及其应用 一、实验目的:1掌握栈的特点(先进后出 FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。2掌握队列的特点(先进先出 FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。二、实验内容:1链栈的建立、入栈、出栈操作。2环形队列的建立、入队、出队操作。3停车场管理。设停车场内只有一个可停放 n 辆汽车的狭长通道,且只有一个大门可
2、供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆 车停放在车场的最北端),若车场内已停满 n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆 必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模 拟管理。每一组输入数据包括三个数据项:汽车“到达”
3、或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上 的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表(带头结点)实现。需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。设 n=2,输入数据为:(A,1,5),(A,2,10),(D,1,15),(A,3,20),(A,4,25),(A,5,30)
4、,(D,2,35),(D,4,40),(E,0,0)。每一组输入数据包括三个数据项:汽车 “到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,A 表示到达;D 表示离去,E 表 示输入结束。三、实验要求:1 C/C+完成算法设计和程序设计并上机调试通过。2 撰写实验报告,提供实验结果和数据。3 写出算法设计小结和心得。四、程序源代码:1.#include#include typedef struct stnode int data;stnode*next;第 1 页 共 15 页 LinkStack;/创建一个栈头结点,无头结 void InitStack(LinkStack*&ls
5、)ls=NULL;/进栈,相当于头插法 void Push(LinkStack*&ls,int x)LinkStack*p;p=(LinkStack*)malloc(sizeof(LinkStack);p-data=x;p-next=NULL;p-next=ls;ls=p;/出栈 void Pop(LinkStack*&ls)if(ls=NULL)return;LinkStack*p;int x;p=ls;while(p)x=p-data;ls=p-next;coutx;free(p);p=ls;cout 出栈成功!endl;/创建栈 void CreatStack(LinkStack*&ls
6、)InitStack(ls);int i=1,num;cout 以 000 表示输入结束!endl;while(1)cout 请输入第 inum;if(num=000)第 2 页 共 15 页 的掌握栈的特点先进后出及基本操作如入栈出栈等栈的顺序存储结构和链式存储结构以便在实际问题背景下灵活应用掌握队列的特点先进先出及基本操作如入队出队等队列顺序存储结构链式存储结构和循环队列的实现以便在实际问一个可停放辆汽车的狭长通道且只有一个大门可供汽车进出汽车在停车场内按车辆到达时间的先后顺序依次由北向南排列大门在最南端最先到达的第一辆车停放在车场的最北端若车场内已停满辆汽车则后的汽车只能在门外的便道上车
7、场为它让路待该辆车开出大门外其它车辆再按原次序进入车场每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用试为停车场编制按上述要求进行管理的模拟程序实现提示以栈模拟停车场以队列模拟车场外的 break;Push(ls,num);i+;cout 进栈成功!endl;void main()LinkStack*ls,*p;CreatStack(ls);Pop(ls);2.#include#define QueueSize 100 typedef struct sqqueue int dataQueueSize;int front,rear;SqQueue;/初始化队列 void Init
8、Queue(SqQueue&qu)qu.rear=qu.front=0;/进队 int EnQueue(SqQueue&sq,int x)if(sq.rear+1)%QueueSize=sq.front)return 0;sq.rear=(sq.rear+1)%QueueSize;sq.datasq.rear=x;return 1;/出队 void DeQueue(SqQueue&sq)int x;if(sq.front=sq.rear)return;while(sq.front!=sq.rear)sq.front=(sq.front+1)%QueueSize;x=sq.datasq.fron
9、t;coutx;第 3 页 共 15 页 的掌握栈的特点先进后出及基本操作如入栈出栈等栈的顺序存储结构和链式存储结构以便在实际问题背景下灵活应用掌握队列的特点先进先出及基本操作如入队出队等队列顺序存储结构链式存储结构和循环队列的实现以便在实际问一个可停放辆汽车的狭长通道且只有一个大门可供汽车进出汽车在停车场内按车辆到达时间的先后顺序依次由北向南排列大门在最南端最先到达的第一辆车停放在车场的最北端若车场内已停满辆汽车则后的汽车只能在门外的便道上车场为它让路待该辆车开出大门外其它车辆再按原次序进入车场每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用试为停车场编制按上述要求进行管理的
10、模拟程序实现提示以栈模拟停车场以队列模拟车场外的 cout 出队成功!endl;/创建队 void CreatQueue(SqQueue&sq)InitQueue(sq);int num,i=1;cout 以 000 表示输入结束!endl;while(1)cout 请输入第 inum;if(num=000)break;EnQueue(sq,num);i+;cout 进队成功!endl;void main()SqQueue sq;CreatQueue(sq);DeQueue(sq);3.#include#include#include#define MAX 2#define price 0.0
11、5 typedef struct node int hour;int min;Time;/时间结点 typedef struct Node char num10;/车牌号 Time reach;/时间 Time leave;CarNode;/车辆信息结点 typedef struct NODE CarNode*stackMAX;int top;第 4 页 共 15 页 的掌握栈的特点先进后出及基本操作如入栈出栈等栈的顺序存储结构和链式存储结构以便在实际问题背景下灵活应用掌握队列的特点先进先出及基本操作如入队出队等队列顺序存储结构链式存储结构和循环队列的实现以便在实际问一个可停放辆汽车的狭长通道
12、且只有一个大门可供汽车进出汽车在停车场内按车辆到达时间的先后顺序依次由北向南排列大门在最南端最先到达的第一辆车停放在车场的最北端若车场内已停满辆汽车则后的汽车只能在门外的便道上车场为它让路待该辆车开出大门外其它车辆再按原次序进入车场每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用试为停车场编制按上述要求进行管理的模拟程序实现提示以栈模拟停车场以队列模拟车场外的 CarStack;/顺序栈模拟车站 typedef struct QNode/队列 CarNode*data;QNode*next;QueueNode;/链队结点类型 typedef struct pqrt QueueN
13、ode*front,*rear;/设置头指针尾指针 LinkQueueCar;/模拟通道 /初始化栈 void InitStack(CarStack*cs);/初始化队列 (便道)int InitQueue(LinkQueueCar*qc);/车辆到达 int Arrival(CarStack*Enter,LinkQueueCar*qc);/车辆离开 void Leave(CarStack*Enter,CarStack*Temp,LinkQueueCar*qc);/显示车库信息 void List(CarStack s,LinkQueueCar w);void main()CarStack E
14、nter,Temp;LinkQueueCar Wait;int ch;InitStack(&Enter);InitStack(&Temp);InitQueue(&Wait);while(1)cout 欢迎光临 endl;cout-endl;cout1.车辆到达 endl;cout2.车辆离开 endl;cout3.车场显示 endl;cout4.退出程序 endl;cout-endl;cout 请选择所需的服务!ch;if(ch=1&chtop=-1;/初始化栈 for(int i=0;istackcs-top=NULL;int InitQueue(LinkQueueCar*qc)/初始化队列
15、 /qc=(LinkQueueCar*)malloc(sizeof(LinkQueueCar);这句话不能要?qc-front=(QueueNode*)malloc(sizeof(QueueNode);if(qc-front!=NULL)qc-front-next=NULL;/带头结点的 qc-rear=qc-front;/一定要注意赋值顺序不能反了!return 1;else return-1;/打印车站车离开的信息 void Print(CarNode*p,int room)int A1,A2,B1,B2;/车辆收费 cout 请输入离开时间:/*:*/endl;coutp-leave.h
16、our;while(p-leave.hourreach.hour|p-leave.hour23)couterror!p-leave.hour;B1=p-leave.hour;第 6 页 共 15 页 的掌握栈的特点先进后出及基本操作如入栈出栈等栈的顺序存储结构和链式存储结构以便在实际问题背景下灵活应用掌握队列的特点先进先出及基本操作如入队出队等队列顺序存储结构链式存储结构和循环队列的实现以便在实际问一个可停放辆汽车的狭长通道且只有一个大门可供汽车进出汽车在停车场内按车辆到达时间的先后顺序依次由北向南排列大门在最南端最先到达的第一辆车停放在车场的最北端若车场内已停满辆汽车则后的汽车只能在门外的便
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统 实验 报告 汇总 建筑 施工 组织 高等教育 大学 课件
限制150内