数据结构停车场问题.docx
《数据结构停车场问题.docx》由会员分享,可在线阅读,更多相关《数据结构停车场问题.docx(26页珍藏版)》请在冰豆网上搜索。
数据结构停车场问题
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车出进。
汽车在停车场内按车辆到达的时间先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在他之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它的车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。
试为停车场编制按上述要求进行管理的模拟程序
编译环境:
VC6.0
源代码:
Hparking.h
#include
#ifndefHparking_H
#defineHparking_H
//汽车信息结点
structCar
{
charADinfor; //车到达或离去的标志
stringCarnumber; //车牌号码
intADtime; //车到达或离去的时刻
};
//便道汽车数据
structBCar
{
Carbcar; //车的信息数据
BCar*next; //指向本身数据的一个指针
};
//停车场大类
classParking
{
public:
Parking();
~Parking();
voidcararrive(); //车刚到,即将分配位置
voidSroad(CaraCar); //南便道停车
voidNroad(CaraCar); //北便道停车
voidSparkingin(CaraCar);//南门进车
voidSparkingout(CaraCar);//南门出车
voidNparkingin(CaraCar);//北门进车
voidNparkingout(CaraCar);//北门出车
voidAllshow(); //显示整个车场的状况
private:
CaraCar; //接收刚到来的车
Car*park; //停车场动态一维数组栈
Car*parkrec; //临时转车场动态一维数组栈
BCar*Northroad; //北门便道起始指针
BCar*Northtail; //北门便道尾指针
BCar*Southroad; //南门便道起始指针
BCar*Southtail; //南门便道尾指针
intn; //停车场车位数
intfee; //单位时间的停车费用
intStop; //停车场栈南头指针
intNtop; //停车场栈北头指针
intTemptop; //临时转车场栈头指针
intSum; //出车时应缴的总费用
};
#endif
Mainparking.cpp
#include
usingnamespacestd;
#include"Hparking.h"
intmain()
{
charm='0';
Parkingparking;
while
(1)
{
cout<<"操作选项:
"< cout<<"******************"< cout<<"1进出车场操作"< cout<<"2整个车场状况显示"< cout<<"3退出"< cout<<"******************"< cout<<"请输入操作选项:
";
cin>>m;
switch(m)
{
case'1':
parking.cararrive();
break;
case'2':
parking.Allshow();
break;
case'3':
break;
default:
cout<<"没有此选项!
"< break;
}
if(m=='3')
{
break;
}
}
return0;
}
North.cpp
#include
usingnamespacestd;
#include"Hparking.h"
//北门进车操作
voidParking:
:
Nparkingin(CaraCar)
{
Ntop--;
park[Ntop].ADinfor=aCar.ADinfor;
park[Ntop].Carnumber=aCar.Carnumber;
park[Ntop].ADtime=aCar.ADtime;
cout<<"车进入北门第"< cout<<"进入停车场的时间是"<}
//北门出车操作
voidParking:
:
Nparkingout(CaraCar)
{
inttime=0;
intj=0;
BCar*p;
p=newBCar;
while(Ntop{
if(park[Ntop].Carnumber==aCar.Carnumber)
{
time=aCar.ADtime-park[Ntop].ADtime;
j=Ntop;
Ntop++;
// delete
cout<<"应缴纳的停车费:
"<