停车场管理系统实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实 现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照 号码和进入停车场的时刻。
设n=2,输入数据为:(A',1,5), (A'2,10), (D',1,15), (A'3,20),(A'4,25),
cout<<x<<"";
}
cout<<"出队成功!!"<<endl;
}
//创建队
void CreatQueue(SqQueue &sq)
{
In itQueue(sq);
int nu m,i=1;
cout<<"以000表示输入结束! !"<<endl; while(1)
{
cout<<"请输入第"<<i<<"个元素:";cin»num;
{ ls=NULL;
}
//进栈,相当于头插法
void Push(Li nkStack *&ls,i nt x)
{
Lin kStack *p;
p=(Li nkStack *)malloc(sizeof(Li nkStack)); p_>data=x;
p-> next=NULL;
p->n ext=ls;
3.写出算法设计小结和心得。
四、程序源代码:
1.#i nclude<iostream.h> #in clude<stdlib.h> typedef struct stnode {
int data;
stnode *n ext;
Word资料
}Lin kStack;
//创建一个栈头结点,无头结
void InitStack(LinkStac源自文库 *&ls)
break;
Push(ls ,nu m);
i++;
}
cout<<"进栈成功!!"<<endl;
}
void mai n()
{
Li nkStack *ls,*p;
CreatStack(ls);
Pop(ls);
}
2.#i nclude<iostream.h>
#defi ne QueueSize 100
typedef struct sqqueue
华北水利水电学院 数据结构 实验报告
2011
班级:
学号:
*****
姓名:
实验二
栈和队列及其应用
实验目的:
1.掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构, 以便在实际问题背景下灵活应用。
2•掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结 构和循环队列的实现,以便在实际问题背景下灵活运用。
(A',5,30) , (D',2,35) ,(D',4,40), (E',0,0)。每一组输入数据包括三个数据项:汽车 到
达"或离去"信息、汽车牌照号码及到达或离去的时刻,其中,A'表示到达;D'表示离去,E'表示输
入结束。
三、实验要求:
1.C/ C++完成算法设计和程序设计并上机调试通过。
2.撰写实验报告,提供实验结果和数据。
if(n um==000)
break;
En Queue(sq ,nu m);
i++;
}
cout<<"进队成功!!"<<endl;
}
void mai n()
{
SqQueue sq;
CreatQueue(sq); DeQueue(sq);
sq.rear=(sq.rear+1)%QueueSize;
sq.data[sq.rear]=x;
return 1;
}
//出队
void DeQueue(SqQueue &sq)
{
int兀
if(sq.fr on t==sq.rear)
return;
while(sq.fro nt!=sq.rear)
{
sq.fr on t=(sq.fro nt+1)%QueueSize; x=sq.data[sq.fr on t];
}
//创建栈
void CreatStack(L in kStack *&ls)
{
In itStack(ls);
int i=1, num;
cout<<"以000表示输入结束!!"<<endl; while(1)
{
cout<<"请输入第"<<i<<"个元素:";cin»num;
if(nu m==000)
实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模
拟管理。每一组输入数据包括三个数据项:汽车到达”或离去”信息、汽车牌照号码及到达或离去的
时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上 的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间 不收费)。栈以顺序结构实现,队列以链表(带头结点)实现。
{
int data[QueueSize];
int fron t,rear;
}SqQueue;
//初始化队列
void In itQueue(SqQueue &qu)
{
qu.rear=q u.fron t=0;
}
//进队
int En Queue(SqQueue &sq,i nt x)
{
if((sq.rear+1)%QueueSize==sq.fro nt) return 0;
实验内容:
1.链栈的建立、入栈、出栈操作。
2•环形队列的建立、入队、出队操作。
3•停车场管理。设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽
车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆 车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦 有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆 必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场 的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的 模拟程序。
ls=p;
}
//出栈
void Pop(Li nkStack *&ls)
{
if(ls==NULL)
return;
Lin kStack *p;
int兀
p=ls;
while(p)
{
x=p->data;
ls=p->n ext;
cout<<x<<"";
free(p);
p=ls;
} cout<<"出栈成功!!"<<endl;
相关文档
最新文档