资源简介
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,一次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车厂内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入,当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。

代码片段和文件信息
#include
using namespace std;
struct car{
int id;
int arrive;
int leave;
int time;
car *next;
};
struct park{
car *base;
int top;
int size;
};
struct queue{
car *first;
car *rear;
int size;
};
int iniqueue(queue &q)
{
q.first=NULL;
q.rear =NULL;
q.size=0;
return 1;
}
int insert_queue(queue &qcar c)
{
if(q.first==NULL)
{
q.first=new car;
*q.first=c;
q.first->next=0;
q.rear=q.first;
q.size++;
return 1;
}
else
{
q.rear->next=new car;
q.rear=q.rear->next;
*q.rear=c;
q.rear->next=0;
q.size++;
return 1;
}
}
int push(park &park1car w)
{
park1.base[park1.top++]=w;
return 1;//进栈
}
car pop(park &park1)
{
if(park1.top)
return park1.base[--park1.top];//出栈
}
car delete_queue(queue &q)
{
car w;
w.arrive=w.id=w.leave=w.time=0; w.next=0;
if(!q.first)
{
cout<<“便道上无车“< return w;
}
else
{
car *p=q.first;
q.first=q.first->next;
w=*p;
delete p;
q.size--;
return w;
}
}
int inistack(park &sint n)
{
s.base=NULL;
s.base=new car[n];
if(!s.base)
{
cout<<“申请内存失败“< return 0;
}
s.size=n;
s.top=0;
return 1;
}
int stack_full(park &park1)
{
if(park1.top return 0;
else return 1;
}
int queue_empty(queue &q)
{
return !q.size;
}
int assign(queue &qpark &park1park &park2char ordercar c)
{
if(order==‘A‘)
{
c.arrive=c.time;
insert_queue(qc);
if(!queue_empty(q))//队列不空
{
if(stack_full(park1))
{cout<<“车牌为“< else
{
push(park1 delete_queue(q) );
// cout< cout<<“车牌为“< }
}
}
else if(order==‘D‘)
{
for(;park1.top && park1.base[park1.top-1].id!=c.id;)
push(park2pop(park1));//让车道
if(!park1.top)//无找到
{
cout<<“no this car“< for(;park2.top;)
push(park1pop(park2));
return 0;
}
else
{
car toleave=pop(park1);
toleave.leave=c.time;
c.leave=c.time;
cout<<“车牌为“< cout<<“总的停留时间为:“< for(;park2.top;)
push(park1pop(park2));//停车场进车,park2退车
if(!queue_empty(q))//队列不空
{
push(park1delete_queue(q));//进车场,删除队列头
park1.base[park1.top-1].arrive=c.leave;//
}
}
}
else if(order==‘E‘)
{
exit(0);
}
else
{
cout<<“非法输入“< return 0;
}
return 1;
}
int main()
{
park park1park2;
queue q;
int n=0;
cout<<“停车场容量“< cin>>n;
inistack(park1n);
inistack(park2n);
iniqueue(q);
char order=‘ ‘;
int id;
int time;
car w;
for(;;)
{
cout<<“请输入车信息“ < cin>>order>>id>>time;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3475 2009-06-10 20:33 停车场管理\1.cpp
文件 3341 2009-06-10 20:33 停车场管理\1.dsp
文件 510 2009-06-10 20:43 停车场管理\1.dsw
文件 41984 2009-06-10 20:43 停车场管理\1.ncb
文件 48640 2009-06-10 20:43 停车场管理\1.opt
文件 1316 2009-06-10 20:33 停车场管理\1.plg
文件 548973 2009-06-10 20:33 停车场管理\Debug\1.exe
文件 789404 2009-06-10 20:33 停车场管理\Debug\1.ilk
文件 261005 2009-06-10 20:33 停车场管理\Debug\1.obj
文件 1996300 2009-06-06 18:59 停车场管理\Debug\1.pch
文件 1098752 2009-06-10 20:33 停车场管理\Debug\1.pdb
文件 82944 2009-06-10 20:33 停车场管理\Debug\vc60.idb
文件 110592 2009-06-10 20:33 停车场管理\Debug\vc60.pdb
目录 0 2009-06-13 00:41 停车场管理\Debug
目录 0 2009-06-13 00:41 停车场管理
----------- --------- ---------- ----- ----
4987236 15
- 上一篇:银行家算法C实现
- 下一篇:多机调度问题C++语言解决的源代码
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- 学校超市选址问题(数据结构C语言版
- VC++MFC小游戏实例教程(实例)+MFC类库
- 数据结构,迷宫问题C语言版源代码
- DSDEMO-C演示(数据结构C语言版 严蔚敏
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
评论
共有 条评论