数据结构
课 程 设 计
题目 停车场管理器设计
专业:计算机科学与技术
班级:1401
姓名:彭旭
学号:143230135
实验主要内容
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“达到”或“离去”信息、汽车牌照号码以及达到或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆达到、则输出汽车在停车场内或便道上停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。
环境
Windows 10 Visual c++ c语言
实验原理
1.概要设计
(1)抽象数据类型定义 ADT Stack{
数据对象:D={ai|ai ∈ElemSet, i=1,2,?n;n>0} 数据关系:R1={
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,?n; n>0}
数据关系:R1={
InitQueue(&Q);
操作结果:构造一个空队列Q
EnQueue(&Q,&e);
初始条件:对列Q已存在。
操作结果:插入元素e为Q的新队尾元素。
DeQueue(&Q,&e);
初始条件:对列Q已存在。
操作结果:删除Q的队头元素, 并用e返回。 }ADT Queue
(2)本程序包含七个模块:
<1>主程序模块,其中主函数为 Void main(){ 初始化;
构造空栈; 输入已知数据; 插入数据入栈; 分析
{入栈;出栈;入队;出队;}
输出数据; }
<2>构造栈模块-----构造一个空栈; 栈插入模块-----插入新的数据元素; 栈删除模块-----删除指定的数据元素;
构造队列模块-----构造一个空队列;
队列插入模块-----插入新的数据元素; 队列删除模块-----删除指定的数据元素; (3)各模块之间的调用关系图解:
主函数模块 分析 构造栈模块 栈插入模块 栈删除模块 构造队列模块 队列插入模块 队列删除模块 2.详细设计 <1>类型定义
#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define MONEY 3
typedef int Status; typedef struct ElemType{ char a[3]; int num; int time; }ElemType;
typedef struct SqStack {
ElemType *base;//在栈构造之前和销毁之后,base的值为NULL
ElemType *top;//栈顶指针
int stacksize;//当前已经分配的存储空间,以元素为单位 }SqStack;//栈的表示 typedef struct QNode{ ElemType data; struct QNode *next; }QNode,*QueuePtr;//队列的表示 typedef struct LinkQueue{ QueuePtr front;//队头指针
QueuePtr rear;//队尾指针 }LinkQueue; <2>栈和队列的基本操作
Status InitStack(SqStack &S)
相关推荐: