设停车场是一个可停放”辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满”辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开人;当停车场内某辆车要离开时,在它之后进人的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进人车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
代码:
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<process.h>
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 20
#define STACK_INCREMENT 2
typedef int SElemType;
typedef int Status;
//定义车的基本信息
typedef struct
{
int arrive[2];
int leave[2];
char num[10];
}car;
//定义队列
typedef struct QNode
{
car data;
QNode *next;
}QNode, *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//定义栈
typedef struct StackNode
{
SElemType data;
struct StackNode *next;
}StackNode, *StackPtr;
typedef struct SqStack
{
int base;
int top;
car parkcar[STACK_INIT_SIZE];
int stacksize;
}SqStack;
//-------------------------------------------------------
//构造一个空栈一个空队列即创建一个停车场
void CreatePark(SqStack &S, LinkQueue &Q)
{
S.base = S.top = 0;
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front)
exit(0);
Q.front->next = NULL;
printf("恭喜停车场创建成功!\n");
}
//-------------------------------------------------------
//-------------------------------------------------------
//遍历栈和队列即显示停车情况
//停车场的情况
void ShowStack(SqStack &S)
{
int j = S.base;
while (j < S.top)
{
cout << S.parkcar[j].num << " " << S