数据结构实验报告—停车场问题
《计算机软件技术基础》 实验报告I—数据结构
实验二:停车场管理问题
一、问题描述
:
设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场‘P’ 显示停车场的车数;候车场‘W’显示候车场的车数;退出‘
E’退出程序。
调用int Result(char carmove,int carnum,int cartime)根据输入信息完成车辆的离开或者达到。
若输入A则调用Car_enter(int carnum,int cartime) ,创建顺序栈CarS和链式队列CarQ,根据栈是否满决定输入的信息入栈还是入队列。若栈未满,输入的车辆信息入栈,若已满,入队列。
若输入D则调用Car_Leave(int carnum,int cartime):创建一个临时栈存放退出让路的车,若在车库中找到对应的车,车库中该车后面的车辆信息进入临时栈CarS2,该车出栈,显示车牌号,此时时间,停留时间,应缴费用。临时栈中的车的信息再回到CarS中。此时若队列CarQ不为空则将队列中车辆信息放入栈CarS中。若在车库中找不到对应的车的车牌号信息,则在表示候车场的队列中找该车信息,如果它在队列的最后,直接出列并输出车牌号,此时时间,停留时间,应缴费用。如果它不在队尾,先把对应信息保存在一个指向队列的指针中,输出车牌号,此时时间,停
留时间,应缴费用。删除队列中此结点表示此车离开候车场。
若输入P,则输出车库车辆数PCar;
若输入W,则输出候车场车辆数WCar;
若输入E,则退出程序。
调用关系
四、详细设计
元素类型、结点类型和结点指针类型:
typedef struct Node1 //构建一个结构体
{
int carnum;
int time;
}Node1;
typedef struct Node2
{
int carnum;
int time;
struct Node2 *next;
}Node2;
创建顺序栈
typedef struct //构造一个顺序栈
{
struct Node1 home[MaxSize];
int stacktop; //栈顶的指针
}Stack;
创建链式队列
typedef struct //构建一个链式队列
{
Node2 *front,*rear;
}Queue;
车辆到达:
void Car_enter(int carnum,int cartime) //到达车辆的信息入栈或者入队
{
if(<MaxSize)//如果栈没有满的时候
{
[].carnum=carnum;//到达车辆信息放入顺序栈
[].time=cartime;
PCar++;//车库里的车数量+1
printf("%d号车进入停车场! 进入时刻:%d 位置:%d\n",[].carnum,[].time,PCar);
++;//栈顶指针加一
}
else //若栈满
{
->carnum=carnum;
->time=cartime;//到达车辆信息加入到队列中
WCar++; //候车场车辆数+1
printf("%d号车进入候车场! 到达时刻
:%d 位置:%d\n",->carnum=carnum,->time=cartime,WCar);
->next=(Node2 *)malloc(sizeof(Node2));//分配空间
=->next;//更改队列指针
}
}
车辆离开
void Car_Leave(int carnum,int cartime)//车离开
{
Stack CarS2;//构造一个栈临时存放为
数据结构实验报告—停车场问题 来自淘豆网m.daumloan.com转载请标明出处.