数据结构课程设计报告报告(八皇后和停车场)(4)

2019-09-01 09:22

经济管理学院本科课程设计论文 开始 初始化两个栈Enter和Temp及一个队列进入主菜车到达 车离开 列表显退出 是 车场是否否 车场内信便道车信退出列表显示 Room前车辆进临对room否 判断栈是否为否 元素进栈Enter 判便道是否有是 是 元素进队列便道车进栈Enter元素队列中元素进队列Wait中元素出结束

图2-1 算法流程图

- 12 -

第2章 停车场管理问

2.4算法基本思想描述

由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,我设计用顺序存储结构来存储停车场内的车辆信息,并给车辆按进栈顺序编号,当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素设计成汽车的车牌号,并以链表的形式存储。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间和车辆离开停车场时的时间,然后计算、显示费用情况。

2.5概要设计

2.5.1栈的抽象数据类型

ADT stack{

数据对象:D={aiai∈charset,I=1,2,??,n,n=0} 数据关系:R1={ai-1,aiai-1,ai∈D,I=2??,n} 基本操作: Initstack(&S)

操作结果:构造一个空栈S。

- 13 -

经济管理学院本科课程设计论文 DestroyStack(&S)

初始条件:栈S已经存在。 操作结果:操作结果:销毁栈S。 ClaerStack(&S)

初始条件:栈S已经存在。 操作结果:将S清空为空栈。 StackLength(&S)

初始条件:栈S已经存在。 操作结果:返回栈S的长度。 StackEmpty(&S)

初始条件:栈S已经存在。

操作结果:若S为空栈,则返回TURE,否则返回FALSE。 GetTop(S,&e)

初始条件:栈S已经存在。

操作结果:若栈S不空,则以e返回栈顶元素。 Push(&S,e)

初始条件:栈S已经存在。

操作结果:在栈S的栈顶插入新的栈顶元素e。 Pop(&S,&e)

初始条件:栈S已经存在。

操作结果:删除S的栈顶元素,并以e返回其值。 StackTraverse(S,visit()) 初始条件:栈S已经存在。

操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit( )。 }ADT stack

2.5.2链式队列的抽象数据类型

typedef struct Qnode{ QelemType data; Struct Qnode next; }Qnode,QueuePtr;

- 14 -

第2章 停车场管理问 typedef struct{

QueuePtr front; 队头指针 QueuePtr rear; 队尾指针 ADT Queue{

数据对象:D={aiai∈ElemSet,i=1,2,??,n,n=0} 数据关系:R1={ai-1,aiai-1,ai∈D,i=2,??,n} 约定中端为队列头,后端为队列尾。 基本操作: InitQueue(&Q)

操作结果:构造一个空队列Q。 DestroyQueue(&Q)

初始条件:队列Q已经存在。

操作结果:队列Q被销毁,不再存在。 ClearQueue(&Q)

初始条件:队列Q已经存在。 操作结果:将Q清为空队列。 QueueEmpty(Q)

初始条件:队列Q已经存在。

操作结果:若Q为空队列,则返回TRUE,否则FALSE。 QueueLength(Q)

初始条件:队列Q已经存在。

操作结果:返回Q的元素个数,即队列的长度。 GetHead(Q,&e)

初始条件:Q为非空队列。 操作结果:用e返回的e队头元素。 EnQueue(&Q,e)

初始条件:队列Q已经存在。

操作结果:插入元素e为Q的新的队尾元素。 DeQueue(&Q,&e)

初始条件:Q为非空队列。

操作结果:删除Q的队头元素,并用e返回其值。 QueueTraverse(Q,visit()) 初始条件:Q已经存在且非空。

- 15 -

经济管理学院本科课程设计论文 操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。 }ADT Queue

2.6模块划分

2.6.1主程序模块

main(){

初始化

while(重复条件){ 接受命令;

switch(调用条件) {

Case调用条件’A’ 到达处理;break; Case调用条件’D’ 离开处理;break; Case调用条件’E’ 退出处理; }

} }

2.6.2 两个栈模块

实现栈抽象数据类型:

数据对象:D={aiai∈charset,I=1,2,??,n,n=0}

数据关系:R1={ai-1,aiai-1,ai∈D,I=2??,n}

- 16 -


数据结构课程设计报告报告(八皇后和停车场)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版小学语文教材一至六年级生字表(凤凰传媒)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: