版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、停车场管理实验报告姓名: 学号: 学院:继续教育学院 班级:计算机科学与技术一 实验目的和要求熟练栈和队列的结构特性,掌握在实际问题背景下的应用二 实验主要内容以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“达到”或“离去”信息、汽车牌照号码以及达到或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆达到、则输出汽车在停车场内或便道上停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。三 实验仪器和环境PC机 Windows xp
2、Visual c+ c语言四实验原理1.概要设计(1)抽象数据类型定义ADT Stack 数据对象:D=ai|ai ElemSet, i=1,2,n;n>0 数据关系:R1=<ai-1,ai>|ai-1,ai D,i=2,n 基本操作: InitStack(&S) 操作结果:构造一个空栈S。 Push(&S,e)初始条件:栈S已存在。操作结果:插入e为新的栈顶元素 Pop(&S,&e) 初始条件:栈S已存在。操作结果:删除S的栈顶元素,并且用e返回。 ADT Stack ADT Queue 数据对象:D=ai|ai ElemSet, i=1,2
3、,n; n>0 数据关系:R1=<ai-1,ai>|ai-1,ai D, i=2,n其中:a1为队头, an为队尾 基本操作: InitQueue(&Q); 操作结果:构造一个空队列Q EnQueue(&Q,&e);初始条件:对列Q已存在。操作结果:插入元素e为Q的新队尾元素。 DeQueue(&Q,&e); 初始条件:对列Q已存在。操作结果:删除Q的队头元素, 并用e返回。ADT Queue (2)本程序包含七个模块:<1>主程序模块,其中主函数为 Void main() 初始化; 构造空栈; 输入已知数据; 插入数据入栈
4、; 分析 入栈;出栈;入队;出队;输出数据; <2>构造栈模块-构造一个空栈; 栈插入模块-插入新的数据元素; 栈删除模块-删除指定的数据元素;构造队列模块-构造一个空队列; 队列插入模块-插入新的数据元素; 队列删除模块-删除指定的数据元素;(3)各模块之间的调用关系如下:主函数模块构造栈模块栈插入模块栈删除模块构造队列模块队列插入模块队列删除模块分析2详细设计<1>类型定义#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define MONEY 5typedef int Status;typedef stru
5、ct ElemTypechar a3;int num;int time;ElemType;typedef struct SqStack ElemType *base;/在栈构造之前和销毁之后,base的值为NULL ElemType *top;/栈顶指针 int stacksize;/当前已经分配的存储空间,以元素为单位SqStack;/栈的表示typedef struct QNodeElemType data; struct QNode *next;QNode,*QueuePtr;/队列的表示typedef struct LinkQueue QueuePtr front;/队头指针Queue
6、Ptr rear;/队尾指针LinkQueue;<2>栈和队列的基本操作Status InitStack(SqStack &S)/构造一个空栈Status Push(SqStack &S,ElemType e)/插入元素e为新的栈顶元素Status Pop(SqStack &S,ElemType &e)/若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERRORStatus InitQueue(LinkQueue &Q)/构造一个空队列QStatus EnQueue(LinkQueue &Q,ElemType e)/
7、插入元素e为Q的新队列Status DeQueue(LinkQueue &Q,ElemType &e)/若队列不空,则删除Q的对头元素,用e返回其值,并返回Ok;否则返回ERROR;<3>部分操作的算法Status InitStack(SqStack &S)/构造一个空栈 S.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType); if(!S.base) exit (OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;Sta
8、tus Push(SqStack &S,ElemType e)/插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize)/栈满,追加存储空间S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType);if(!S.base) exit(OVERFLOW);/存储分配失败S.top=S.base+S.stacksize;S.stacksize+=STACK_INIT_SIZE;*S.top+=e;return OK;Status Pop(SqStack &am
9、p;S,ElemType &e)/若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERRORif(S.top=S.base) return OK;e=*-S.top;return OK;/-队列Status InitQueue(LinkQueue &Q)/构造一个空队列QQ.front=Q.rear=(QueuePtr)malloc(sizeof(QNode);if(!Q.front) exit (OVERFLOW);/存储分配失败Q.front->next=NULL;return OK;Status EnQueue(LinkQueue &Q,E
10、lemType e)/插入元素e为Q的新队列p=(QueuePtr)malloc(sizeof(QNode);/存储分配失败if(!p) exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return OK;Status DeQueue(LinkQueue &Q,ElemType &e)/若队列不空,则删除Q的对头元素,用e返回其值,并返回Ok;否则返回ERROR;if(Q.front=Q.rear) return ERROR;p=Q.front->next;e=p->dat
11、a;Q.front->next=p->next;if(Q.rear=p) Q.rear=Q.front;free(p);return OK;五源程序#include <stdio.h>#include <process.h>#include <malloc.h>#include <string.h>/-函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define TNFEASIBLE -1#define OVERFLOW -2/Status 是函数的类型
12、,其值是函数结果状态代码typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define MONEY 5typedef struct ElemTypechar a3;int num;int time;ElemType;typedef struct SqStack ElemType *base;/在栈构造之前和销毁之后,base的值为NULL ElemType *top;/栈顶指针 int stacksize;/当前已经分配的存储空间,以元素为单位SqStack;/栈的表示typedef struct Q
13、NodeElemType data;struct QNode *next;QNode,*QueuePtr;/队列的表示typedef struct LinkQueueQueuePtr front;/队头指针QueuePtr rear;/队尾指针LinkQueue;/-基本操作的实现/-栈Status InitStack(SqStack &S)/构造一个空栈 S.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType); if(!S.base) exit (OVERFLOW); S.top=S.base; S.stacksize=S
14、TACK_INIT_SIZE; return OK;/InitStackStatus Push(SqStack &S,ElemType e)/插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize)/栈满,追加存储空间S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType);if(!S.base) exit(OVERFLOW);/存储分配失败S.top=S.base+S.stacksize;S.stacksize+=STACK_INIT_SIZE;*S.
15、top+=e;return OK;/PushStatus Pop(SqStack &S,ElemType &e)/若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERRORif(S.top=S.base) return OK;e=*-S.top;return OK;/Pop/-队列Status InitQueue(LinkQueue &Q)/构造一个空队列QQ.front=Q.rear=(QueuePtr)malloc(sizeof(QNode);if(!Q.front) exit (OVERFLOW);/存储分配失败Q.front->next=
16、NULL;return OK;/InitQueueStatus EnQueue(LinkQueue &Q,ElemType e)/插入元素e为Q的新队列 struct QNode *p;p=(QueuePtr)malloc(sizeof(QNode);/存储分配失败if(!p) exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return OK;/EnQueueStatus DeQueue(LinkQueue &Q,ElemType &e)/若队列不空,则删除Q的对头元素,用e
17、返回其值,并返回Ok;否则返回ERROR; struct QNode *p;if(Q.front=Q.rear) return ERROR;p=Q.front->next;e=p->data;Q.front->next=p->next;if(Q.rear=p) Q.rear=Q.front;free(p);return OK;/DeQueue/-主函数void main()int i,t,f,m,n,s1_num,Q_num;struct SqStack s1,s2;struct LinkQueue Q;struct ElemType e,e1;s1_num=0;Q_n
18、um=0;t=0;m=0;InitStack(s1);InitStack(s2);InitQueue(Q);printf("停车场的容量是n");scanf("%d",&n);printf("输入数据n");scanf("%s",e1.a);scanf("%d%d",&e1.num,&e1.time);while(strcmp(e1.a,"E")!=0)if(strcmp(e1.a,"A")=0) /当有车辆进来的时候 if(s1_
19、num<n) Push(s1,e1);s1_num+; printf("此车停在停车场内由北向南第 "); printf("%d",s1_num); printf("个n"); else EnQueue(Q,e1);Q_num+; printf("此车停在便道距门口第 "); printf("%d",Q_num); printf("个n");else if(strcmp(e1.a,"D")=0) /当有车辆离开的时候 f=s1_num;for(i=0;i<f;i+)Pop(s1,e);s1_num-;if(e1.num=e.num)t=e1.time-e.time;m=MONEY*t;printf("此车停车时间%d,所需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- A证(企业负责人)-安全员A证考试模拟题练习
- 沪科版九年级物理全一册《第十七章从指南针到磁浮列车》章末测试卷含答案
- 国企工会换届上的领导讲话-凝聚奋进力量 彰显工会作为
- 科技孵化器入驻企业潜力筛选
- 电力系统设备故障预防与处理流程
- 高一化学二第三章有机化合物练习
- 2024届安徽省示范高中培优联盟高考化学三模试卷含解析
- 2024高中地理第3章地理信息技术应用第2节遥感技术及其应用学案湘教版必修3
- 2024高中物理第二章交变电流第二节交变电流的描述达标作业含解析粤教版选修3-2
- 2024高中语文第一单元以意逆志知人论世书愤训练含解析新人教版选修中国古代诗歌散文欣赏
- 紫草科旋花科马鞭草科唇形科茄科课件
- 物品移交登记表格模板
- 超市会员流程制度
- 干部履历表(A4版)
- 电梯维修协议书
- 安徽省安庆市四中学2023-2024学年七年级数学第一学期期末学业质量监测试题含解析
- 矿工睡岗检查书
- 《道德经》(老子)课件
- 仁恒江湾城修建幕墙工程监理实施细则
- 广东省佛山南海区四校联考2023届中考试题猜想数学试卷含解析
- 2023年江苏苏州工业园区管委会招聘笔试参考题库附带答案详解
评论
0/150
提交评论