CSDN实验二介绍.doc

停车场模拟管理系统实验报告 班级:08-01 姓名: 学号: 日期:2010-6-16 需求分析: 程序功能: 用顺序栈模拟停车位和辅助栈,用顺序队模拟便道。来车显示停车位置,离车显示车辆调度情况及应交的停车费。判断栈空,来车时车入栈,若车场已停满车则栈满,再来的车便在便道等待,即入队。一旦有车开走,则排在便道上的第一辆车即可开;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。void main 初始化 while 接受命令: 处理命令; //输入1时有车辆进入车场即入栈,再次输入来车的车牌号和进入时间;栈满时车辆入队即在便道等待; //输入2时有车辆离开即出栈,输入车位和车离开的时间并根据车在停车场的时间计费;便道上的车进入车场,记录上进入时间; //输入3时查看车场和便道上的停车列表; //输入4时退出程序; 命令! 退出 (2)void InitStack SeqStackCar * ;? (3)int InitQueue LinkQueueCar * ; (4)void PRINT CarNode,int room ; (5)int Arrival SeqStackCar *,LinkQueueCar * ;? (6)void Leave SeqStackCar *,SeqStackCar *,LinkQueueCar * ; (7)void List1 SeqStackCar ; (8)void List2 LinkQueueCar ; (9)void List SeqStackCar,LinkQueueCar ;? 三.详细设计: 1.栈采用结构体存储结构: typedef struct SqStack SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */ SElemType *top; /* 栈顶指针 */ int stacksize; /* 当前已分配的存储空间,以元素为单位 */ SqStack; /* 顺序栈 */ Status InitStack SqStack *S /* 构造一个空栈S */ *S .base SElemType * malloc STACK_INIT_SIZE*sizeof SElemType ; if ! *S .base exit OVERFLOW ; /* 存储分配失败 */ *S .top *S .base; *S .stacksize STACK_INIT_SIZE; return OK; 2.单链队列--队列的链式存储结构: typedef struct QNode QElemType data; struct QNode *next; QNode,*QueuePtr; typedef struct QueuePtr front,rear; /* 队头、队尾指针 */ LinkQueue; Status InitQueue LinkQueue *Q /* 构造一个空队列Q */ *Q .front *Q .rear QueuePtr malloc sizeof QNode ; if ! *Q .front exit OVERFLOW ; *Q .front- next NULL; return OK; 3.栈和队列的基本操作 void InitStack SeqStackCar * ;? //构造一个空栈 int InitQueue LinkQueueCar * ; //构造一个空队列 void PRINT CarNode,int room ; //计费函数,根据车辆在停车场所在时间收费 int Arrival SeqStackCar *,LinkQueueCar * ;? //来车函数,判断栈空,有车来时进栈,若不空则入队,即在便道等候 void Leave SeqStackCar *,SeqStackCar *,LinkQueueCar * ; //离车函数,车场里的车出栈,位于其车后面的车先进入临时栈,待车离去,其它车入栈 void List1 SeqStackCar ; //车场内车辆列表 void List2 LinkQueueCar ; //便道车辆列表 void List SeqStackCar,LinkQueueCar ;? //车场列表和便道列表的菜单 4. 栈和队列的基本操作的实现 void InitStack SeqStackCar *s //初始化栈,主栈和临时栈(调用两次) int i; s- top 0; for i

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档