文档详情

1605120107-胡志豪-实验报告04-队列应用-模拟停车场.doc

发布:2018-06-30约6.6千字共13页下载文档
文本预览下载声明
计算机科学与工程学院PAGE PAGE 9《算法与数据结构》实验报告计算机科学与工程学院《算法与数据结构》实验报告(四)专业班级2006级计算机02班实验地点J419机房学生学号1605120107指导教师张俊学生姓名胡志豪实验时间2018-4-17实验项目队列的应用实验类别基础性(√) 设计性() 综合性() 其它( )实验目的及要求(1)掌握队列的特点及其存储方法;(2)掌握队列的常见算法和程序实现。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律按要求完成设计任务30分程序与报告程序代码规范、功能正确报告详实完整、体现收获70分说明: 评阅教师: 张俊 日 期: 2018 年 4 月 17 日实 验 内 容实验内容:停车场模拟程序。实验说明:详见上机实验指导P81。运用栈和队列模拟停车场管理。设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由南向北排列(大门在最北端,最先到达的第一辆车停放在车场的最南端)。若车场内已停满n辆车,则后来的汽车只能在门外的便道即候车场上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。#ifndef SQSTACK_H#define SQSTACK_H#includestdio.h#includemalloc.h#define N 3#define M 4#define Price 2typedef struct{ int CarNo[N]; int CarTime[N]; int top;}SqStack;typedef struct{ int CarNo[M]; int front,rear;}SqQueue;void InitStack(SqStack * s){ s=(SqStack *)malloc(sizeof(SqStack)); s-top=-1;}bool StackEmpty(SqStack * s){ return(s-top==-1);}bool StackFull(SqStack * s){ return(s-top==N-1);}bool Push(SqStack * s,int e1,int e2){ if(s-top==N-1) return false; s-top++; s-CarNo[s-top]=e1; s-CarTime[s-top]=e2; return true;}bool Pop(SqStack * s,int e1,int e2){ if(s-top==-1) return false; e1=s-CarNo[s-top]; e2=s-CarTime[s-top]; s-top--; return true;}void DispStack(SqStack * s){ for(int i=s-top;i=0;i++) printf(%d,s-CarNo[i]); printf(\n);}void InitQueue(SqQueue * q){ q=(SqQueue *)malloc(sizeof(SqQueue)); q-front=q-rear=0;}bool QueueEmpty(SqQueue * q){ return (q-front==q-rear);}bool QueueFull(SqQueue * q){ return ((q-rear+1)%M==q-front);}bool enQueue(SqQueue * q,int e){ if((q-rear+1)%M==q-front) return false; q-rear=(q-rear+1)%M; q-CarNo[q-rear]=e; return true;}bool deQueue(SqQueue * q,int e){ if(q-front=q-rear) return false; q-front=(q-front+1)%M; e=q-CarNo[q-front]; return true;}void DispQueue(SqQueue * q){ int i=(q-front+1)%M; printf(%d,q-CarNo[i]); while((q-rear-i+M)%M0) { i=(i+1)%M; printf(%d,q-CarNo[i]); } printf(\n)
显示全部
相似文档