没有合适的资源?快使用搜索试试~ 我知道了~
首页停车场管理系统 (栈和队列的应用)
设有一个可以停放n辆汽车的狭长停车场(先进后出),它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后依次从停车场最里面向大门口处停放(最先到达的第一辆车停放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车离开,则排在便道上的第一辆车就可以进入停车场。停车场内如有某辆车要离开,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车再按原来的次序进停车场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车没进停车场就要离开,允许其离开,不收停车费,并且仍然保持在便道上的车辆次序。试编程模拟停车场管理。
资源详情
资源评论
资源推荐

班级: 计算机 11-2 姓名:黄永志 学号:11034050210 成绩:
实验六 栈和队列的应用
一, 实验目的:
1 掌握栈的数据类型描述及栈的特点;
2 掌握栈的顺序存储结构的特点及算法描述;
3 掌握队列的数据类型描述及链式存储结构的特点和算法描述。
二, 实验内容:
停车场管理。设有一个可以停放 n 辆汽车的狭长停车场(先进后出),它只
有一个大门可以供车辆进出。车辆按到达停车场时间的先后依次从停车场最里面向
大门口处停放(最先到达的第一辆车停放在停车场的最里面)。如果停车场已放满
n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车离开,
则排在便道上的第一辆车就可以进入停车场。停车场内如有某辆车要离开,在它之
后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车再按
原来的次序进停车场。每辆车在离开停车场时,都应根据它在停车场内停留的时间
长短交费。如果停留在便道上的车没进停车场就要离开,允许其离开,不收停车费,
并且仍然保持在便道上的车辆次序。试编程模拟停车场管理。
1 / 18

三, 算法描述:
提示:可以将停车场定义成一个顺序栈 s1,便道定义成一个链队列 q,而停
车场中的某辆车要离开,则在它后面进停车场的车必须让道,让其离开,故还必须
有一个临时的顺序栈 s2,存放让道的车辆。
当有车辆进停车场时,直接进入 s1 栈,若 s1 栈满,则进入便道(链队列
q)。若有 s1 中车辆 x 离开时,先让在 x 后面进栈的车从 s1 退栈并进栈到 s2 中,
让 x 离开并收取停车费,然后,再把 s2 中的所有车辆退栈并重新进入 s1 栈,最
后,将链队列 q 的队头车辆进栈到 s1 中并删除队头车辆。若有链队列 q(便道)
中的车辆 y 离开时,从链队列中删除该车辆即可,不收停车费。
车辆的数据可以表示为(车辆编号,到达/离开时间)。
四, 设计与编码:
设计:
这次, 我原本想用一个栈和一个链表做的, 但看了算法描述, 倒是我误解了本
次实验的目的了-------栈和列的综合应用. 固然用一栈一恋可以写出, 但那已经不
是栈了. 对于顺序表, 它们的地址设计编码得万分小心, 稍不留神, 错误迭生, 尤其
是链表.
这一次, 几乎是我所写 C++程序了最困难的一次, 虽然算法不怎么好, 也没
有值得令人称赞的亮点, 抑或逊于偶尔写的一两个小程序的闪光处, 但是, 这一次,
真的收获颇多. 个中, 各个变量之间的关系, 类和对象, 数组与链表, 库函数, 真
的是综合应用……
运行代码:
#include <iostream>
using namespace std;
2 / 18

const int size = 5; //停车场停放车上限
int enterTop;
int tmpTop; //我搞不懂 top 为何不能放入 private 中
struct shortcutLinked //便道停车
{
char carNumber[10]; //车牌号
shortcutLinked *next;
};
class Parking
{
public:
void setParking();
void enterPot(Parking enter[]); //进入停车场 , 停车场可放车数
栈 1
void showEnterPot(Parking enter[]); //查看停车场
void exitPot(Parking exit[]); //离开停车场
void shortcut(); //便道 链表
void showShortcut(); //查看便道
void exitShortcut(); //离开便道
void charge(int ihour, int iminute, int ohour,int
ominute); // 收费
private:
int inhour, inminute; //就默认可停一天
int outhour, outminute; //离开时间
int port, order; //停车场车位号, 便道排号
char carNumberPot[10]; //车牌号
shortcutLinked *front, *rear;
};
3 / 18

void Parking::setParking()
{ order = 0;
enterTop = -1;
tmpTop = -1;
shortcutLinked *s;
s = new shortcutLinked;
s->next = NULL;
front = rear = s;
}
void Parking::enterPot(Parking enter[])
{
if (enterTop>size-2)
{
cout<<"停车场已满, 车辆需放在便道上!\n";
shortcut();
}
else
{
cout<<"车位号 "<<enterTop+2<<" 尚空, 可停放!\n";
cout<<"请输入车牌号:\n";
cin>>enter[++enterTop].carNumberPot;
cout<<"请输入进场时间: ( 24 小时制, 先输入小时, 后输入分钟
) \n";
cin>>enter[enterTop].inhour>>enter[enterTop].inminute;
cout<<"车牌号:
"<<enter[enterTop].carNumberPot<<" 已停放
进"<<enterTop+1<<"号车位!\n";
}
}
void Parking::showEnterPot(Parking enter[])
4 / 18
剩余17页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0