栈和队列及其应用停车场管理.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《栈和队列及其应用停车场管理.pdf》由会员分享,可在线阅读,更多相关《栈和队列及其应用停车场管理.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.实验 2 栈和队列及其应用-停车场管理 一 需求分析 设停车场是一个可停放 n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场按到达时间的先后顺序,一次由北朝向南排列(大门在最南边最先到达的第一辆汽车停放在车场最北端),若停车场已满,则以后来的汽车只能停在便道上,一旦有车辆开走,则便道上的第一辆车便可开进车场;当车场某辆车要离开时,在他之后进入的车辆必须先退出车场为其让路,待该车辆开出大门后,其他车辆在按原来顺序 开进车场,每辆停放在车场的车辆按其待得时间长短缴纳费用(便道上不收费)。以栈模拟停车场,以队列模拟便道,按照从终端读入的数据进行模拟管理。每一组数据包括三个数据项:汽车“
2、到达”或“离开”的信息,汽车牌照号以及到达或离开的时间。对每一组输入数据进行操作后的输出信息为:若是车辆到达则输出汽车在停车场或在便道上的位置,若是车辆离开则输出汽车在停车场停留的时间和需要缴纳的费用(便道不收费)。栈以顺序结构实现,队列以链表结构实现。二 概要设计 1.设定栈的抽象数据类型定义:ADT Stack 数据对象:D=ai|aiElemSet,i=1,2,n,n=0 数据关系:R=|ai-1,aiD,约定 an 为栈顶元素 基本操作:.InitStack(&S)操作结果:构造一个空栈 DestroyStack(&S)初始条件:栈 S 已存在 操作结果:销毁栈 S ClearStac
3、k(&S)初始条件:栈 S 已存在 操作结果:将 S 清为空栈 Push(&S,e)初始条件:栈 S 已存在 操作结果:插入 e 到栈顶 Pop(&S,&e)初始条件:栈 S 已存在且非空 操作结果:删除栈顶元素用 e 返回其值 Status StackFull(SqStack S)初始条件:栈已存在 操作结果:栈满则返回 TRUE,否则返回 FALSE Status StackEmpty(SqStack S)初始条件:栈已存在 操作结果:栈空则返回 TRUE,否则返回 FALSE ADT Stackr 2.设定队列的抽象数据类型定义:ADT Queue 数据对象:D=ai|aiElemSet
4、,i=1,2,n,n=0 数据关系:R=|ai-1,aiD,约定 a1 为队头,an 为对尾.部 基本操作:InitQueue(&Q)操作结果:构造一个空队列 EnQueue(&Q,e)初始条件:队列 Q 已存在 操作结果:插入 e 到队尾 DeQueue(&Q,&e)初始条件:队列 Q 已存在且非空 操作结果:删除队头元素用 e 返回其值 Status QueueEmpty(LinkQueue&Q)初始条件:队列存在 操作结果:队列空为真,否则为假 ADT Queue 3.本程序包含四个模块:1 Void main()初始化;while(1)接受用户数据;作出相应操作;.2 栈模块实现栈抽象
5、数据类型定义;3 队模块实现队列抽象数据类型定义 4 停车场有关操作 三详细设计#include#include#include#define True 1#define False 0#define ok 1#define Error 0#define Infeasible-1#define Overflow-2/-*-*-*-*-*-*-*-*-车辆信息定义*-*-*-*-*-*-*/typedef struct char AD;int car_ID;int time;car_info;/-栈-/Status 表示函数的返回状态 typedef int Status;typedef car
6、_info SElemType;#define STACK_INIT_SIZE 100 /存储空间初始分配量#define STACKINCREMENT 10 /存储空间分配增量 typedef struct SElemType*base;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;
7、S.stacksize=STACK_INIT_SIZE;.return ok;/InitStack Status StackFull(SqStack S)/栈满则返回 TRUE,否则返回 FALSE if(S.top-S.base=S.stacksize)return True;else return False;/栈满吗 Status StackEmpty(SqStack S)/栈空则返回 TRUE,否则返回 FALSE if(S.top=S.base)return True;else return False;/栈空吗 Status Push(SqStack&S,SElemType e)/
8、插入元素 e 为新的栈顶元素 *S.top=e;S.top+;return ok;/Push Status Pop(SqStack&S,SElemType&e)/若栈不空,则删除 S 的栈顶元素,用 e 返回其值 if(S.top=S.base)return Error;S.top-;e=*S.top;return ok;/Pop /*-*-*-*-*-*队列*-*-*-*-*-*-*-/typedef car_info QElemType;typedef struct QNode QElemType data;struct QNode*next;QNode,*QueuePtr;typedef
9、 struct QueuePtr front;QueuePtr 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;/InitQueue Status EnQueue(LinkQueue&Q,QElemType e)/插入元素 e 为 Q 的新的队尾元素 QueuePtr p;p=(QueuePtr)malloc(siz
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 队列 及其 应用 停车场 管理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内