学 海 无 涯
设停车场内只有一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车
进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在
最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n 辆汽车,
则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆
车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场
为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车
场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按
上述要求进行管理的模拟程序。
功能描述
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序
列进行模拟管理。每一组输入数据包括三个数据项:汽车 “到达”或 “离去”信
息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数
据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;
则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收
费)。栈以顺序结构实现,队列以链表实现
系统设计及实现
1.头文件及宏定义
#include
#include
#include
#include
#include
#define ClearScreen() system( "cls" ) // 清空当前屏幕
#define setcolor() system("color 2f")//设置背景前景颜色
#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()
2.时间和汽车信息结构体的定义(部分代码)
typedef struct carinformation // 车辆信息
{
char szRegistrationMark[64]; // 车牌号
char szArrivalTime[16]; // 到达时间
char szEntranceTime[16]; // 进入停车场(开始计费)时间
char szDepartureTime[16]; // 离开时间
} TCARINFORMATION, *LPTCARINFORMATION;
1
学 海 无 涯
3.栈和队列的定义(部分代码)
typedef struct carqueue // 链队
{
LPTCARNODE lpHead; // 头结点
LPTCARNODE lpRear; // 指向当前队尾的指针
int nEffectiveSize; // 当前队中元素个数
} TCARQUEUE, *LPTCARQUEUE;
4.栈和队列的初始化(部分代码)
void InitQueue( LPTCARQUEUE &lpCarQueue )
{
lpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE ) );
lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ) );
lpCarQueue->lpHead->lpNext = NULL;
lpCarQueue->lpRear = lpCarQueue->lpHead;
lpCarQueue->nEffectiveSize = 0;
}
实现过程
1.开始界面:输入车库容量
2.输入车辆到达信息
2
学 海